3- 創建線程

參考:https://blog.csdn.net/choudan8888/article/details/98329862

 

創建線程接口:pthread_create() 創建成功返回0,否則返回非零值

通過示例簡單瞭解下線程執行情況

注意:Makefile腳本加上-lpthread,不然報錯

 

示例:

#Makeile
main:main.o
	gcc main.o -o main -lpthread

main.o:main.c
	gcc -c -Wall main.c -o main.o 

.PHONY:clean
clean:
	rm -rf *.o main
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<pthread.h>

void * thread_strat(void *message)
{
    printf("%s[%d] %s\n  thread=%lu \n",__func__,__LINE__,(const char *)message,pthread_self());
	
	/*讓出執行權,返回main。直到main再次讓出執行權*/
	sleep(1);
	printf("%s[%d] thread=%lu  here is thread\n",__func__,__LINE__,pthread_self());
	
	return message;
}

int main(void)
{
	pthread_t thread;
	int ret;
	const char *message = "creat thread succ";
	
	/*只是創建線程,並不執行*/
	ret = pthread_create(&thread,NULL,thread_strat,(void *)message);
	if(!ret)
	{
		perror("pthread_creat");
	}
	printf("%s[%d] thread=%lu \n",__func__,__LINE__,pthread_self());
	
	/*讓出執行權,開始執行線程。直到線程睡眠,才返回main*/
	sleep(1);
	printf("%s[%d] thread=%lu   i'm comming!\n",__func__,__LINE__,pthread_self());
	sleep(1);
	printf("%s[%d] thread=%lu   i'm comming!\n",__func__,__LINE__,pthread_self());

	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章