昨天的时候,尝试了一下多线程编程。可是没有编译成功,今天早上查了一下,原来是编译的参数不对。
wangyao@fisherman:~/Desktop$ gcc -o hello hello.c
/tmp/cc2cjpPr.o:在函数‘main’中:
hello.c:(.text+0x49):对‘pthread_create’未定义的引用
hello.c:(.text+0x5c):对‘pthread_join’未定义的引用
collect2: ld returned 1 exit status |
多线程的程序要加上一个 -lpthread参数,这样指定使用pthread库。
wangyao@fisherman:~/Desktop$ gcc -o hello hello.c -lpthread wangyao@fisherman:~/Desktop$
|
代码:
#include #include
void *thread(void *vargp) { printf("Helo.world!\n"); return NULL; }
int main() { pthread_t tid; pthread_create(&tid,NULL,thread,NULL); pthread_join(tid,NULL);
return 0; }
|
解释一下程序:
main标识主线程,在里面声明了一个本地变量tid,它用来存放对等线程的ID。主线程通过调用pthread_create,创建一个新的对等线程;当pthread_create返回时,主线程与对等线程并发执行,tid保存着对等线程的id号。
通过调用[thread_join,主线程等待对等线程的中止,最后主线程退出,中止这个进程中的所有线程。
阅读(1076) | 评论(0) | 转发(0) |