linux中的线程(线程的创建,销毁)附例程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

perror(“ Thread creation failed”); exit(1); } } for (i=0;i<TN;i++) pthread_join(thread[i],NULL); puts(“main thread exiting ”); return 0; } void routine(void *arg) { int j; for(j=0;j<5;j++) { sleep(1+(int)(5.0*rand()/(RAND_MAX+1.0))); printf(“%s:”,(char*)arg); printf(“%d\n”,j); } return; }
注意! ! ! ! ! ! ! ! ! ! ! ! ! ! 比如你的源程序叫做 myapp.c, 目标编译时 myapp, 则: gcc -o myapp myapp.c -lpthread 表示链接到 pthread 库上才可以
ቤተ መጻሕፍቲ ባይዱ
处理 Linux 中的线程 1. 线程的创建 pthread_create() #include <pthread.h> int pthread_create(pthread_t*thread,pthread_attr_t*attr,void*(*start_routine)(void*),void*arg); thread 指向一个 pthread_t 结构,新创建线程的标识就存放在这里; attr 用来指定即将创建的新线程的属性,若为 NULL,则用默认属性; start_routine 是新线程所执行的函数; arg 是执行函数的参数。 若返回 0:线程标识存放在 thread 中。 错误返回非零:非 0 的错误码。 2. 线程的终止 pthread_exit() #include<pthread.h> void pthread_exit(void*retval); pthread_exit 终止线程的运行。线程函数中的 returen 也有同样的作用。 retval 是线程的返回码,可被 pthread_join()使用。 返回:无 3. 等待子线程的终止 pthread_join() #include<pthread.h> int pthread_join(pthread_t th,void **thread_return); th 为等待终止的子线程。若 thread_return 不为 NULL,则线程 th 的返回值存放在 thread_return 所指向的地方。 4. 多线程编程举例 #include<pthread.h> #include<stdio.h> #include<unistd.h> #include<stdlib.h> #include<string.h> #define TN 3 void routine(void*arg); int main() { pthread_t thread[TN]; int retval,i; char msg[TN][10]; puts(“main thread is running.”) for(i=0;i<TN;i++) { sprint(msg[i],”thread %d”,i); retval=pthread_create(&thread[i],NULL,(void*)routine,msg[i]); if(retval!=0) {
相关文档
最新文档