首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

【CC++多线程编程之四】终止pthread线程

如一个线程调用 pthread_join等待还有一个线程终止。以下介绍等待线程终止函数pthread_join。...2.等待线程终止:pthread_join() 该返回值ret通过还有一个函数pthread_join传递。...等待线程终止pthread_join原型为: 等待线程终止pthread_join会堵塞调用线程,直到其指定的线程终止。pthread_join通过第一个參数:线程ID来指定线程。...调用者调用pthread_jion等待一个特定线程终止,在这样的情况下,调用者可能须要这个特定线程的返回值,pthread_join通过将value_ptr的地址赋值给特定线程的pthread_exit...3.pthread_exi与pthread_join牛刀小试: 上面的样例主线程main调用pthread_join等待子线程My_thread线程终止,通过传递My_thread_ret地址获取子线程

1.1K20

Linux下多线程的实现(基于pthread库)

等待线程结束 pthread_join()函数用于等待线程结束,回收资源。类似于进程等待还是waitpid。...pthread_join只能适用于非分离的线程,因此如果没有必要等待线程终止,则应该将该线程分离。如果线程已经处于分离状态,那么调用失败。...pthread_exit在退出线程以后并不会释放资源,而是需要pthread_join函数来释放。当主线程调用这个pthread_exit函数仅仅只是终止主线程,其他线程仍将继续存在。...函数原型:void pthread_exit(void *retval) 参数retval可以通过pthread_join()来访问到这个指针。...下面这个例子是对上面的这个例子一点小小的变化,可以通过pthread_join()来获取pthread_exit()的返回值。

4K20

Linux系统编程-(pthread)线程创建与使用

对于线程而言,若要主动终止需要调用pthread_exit() ,主线程需要调用pthread_join()来回收(前提是该线程没有设置 “分离属性”)。...等待线程结束,释放线程的资源*/ pthread_join(thread_id1,NULL); pthread_join(thread_id2,NULL); return 0; } //gcc...这个函数的作用是,终止调用它的线程并返回一个指向某个对象的指针,该返回值可以通过pthread_join函数的第二个参数得到。...,即还有一部分资源没有被回收(退出状态码),所以创建线程者应该pthread_join来等待线程运行结束,并可得到线程的退出代码,回收其资源(类似于进程的wait,waitpid)。...但是调用pthread_join(pthread_id)函数后,如果该线程没有运行结束,调用者会被阻塞,在有些情况下我们并不希望如此。

2K10

Posix多线程编程

(2)线程等待的函数 1int pthread_join (pthread_t tid, void ** status); 参数说明: pthread_join用于等待某个线程退出,成功返回0,否则返回...而如果不是分离状态,线程必须保留它的线程ID,退出状态直到其它线程对它调用了pthread_join。...(pid, NULL); 35 pthread_join(pid1, NULL); 36 return 0; 37} 注意,在gcc中,默认是不包含线程相关的库的,所以在编译这个程序操作如下是会产生错误的...图4-3-27 创建线程的实验结果 pthread.c创建了2个线程,并在线程中实现打印功能,最终调用pthread_join等待子线程运行结束,一并退出。...(pid, NULL); 47 pthread_join(pid1, NULL); 48 return 0; 49} 一样的,同样执行编译加上-lpthread参数保证编译时链接线程库,然后运行

76840

Linux多线程编程实例解析

\n");   return 1;   }   pthread_join(id1,NULL);   pthread_join(id2,NULL);   return 0;   }   执行结果如下:   ...(pthread_t thread,void **rval_ptr);   /*成功结束进程为0,否则为错误编码*/   pthread_join使一个线程等待另一个线程结束。   ...代码中如果没有pthread_join主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。...加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行。   ...头文件 : #include   函数定义: int pthread_join(pthread_t thread, void **retval);   描述 :pthread_join()函数,以阻塞的方式等待

2.3K40

手把手教你写linux系统下贪吃蛇(二)

/第一个参数: 创建线程的ID     第二个参数: 线程属性,调度策略,优先级都在这里设置,如果NULL为默认属性 //第三个参数: 线程入口函数,可返回一个(void*)类型的返回值,该返回值可由pthread_join...接收 //第四个参数:设置为NULL就好 pthread_join(pt_operate,NULL); pthread_join(pt_refresh,NULL); /*一般来讲,进程中各个函数都是独立的...,线程的终止并不会通知,也不会影响其他线程,终止的线程占用的资源也不会随着线程的终止得到释放,正如进程可以用wait()系统调用来同步终止并释放一切内存一样,在linux中没有进程,却有类似的函数 pthread_join...(); 函数原型:int pthread_join(pthread_t th, void **thread_return) 第一个参数线程ID,第二个设置为NULL就行 */         endwin...(pt_operate,NULL); pthread_join(pt_refresh,NULL); // operate(); // refresh();         endwin();

1K20

Linux多线程编程实例解析

\n");   return 1;   }   pthread_join(id1,NULL);   pthread_join(id2,NULL);   return 0;   }   执行结果如下:   ...(pthread_t thread,void **rval_ptr);   /*成功结束进程为0,否则为错误编码*/   pthread_join使一个线程等待另一个线程结束。   ...代码中如果没有pthread_join主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。...加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行。   ...头文件 : #include   函数定义: int pthread_join(pthread_t thread, void **retval);   描述 :pthread_join()函数,以阻塞的方式等待

1.4K20

Linux C语言多线程编程实例解析

\n");   return 1;   }   pthread_join(id1,NULL);   pthread_join(id2,NULL);   return 0;   }   执行结果如下:   ...(pthread_t thread,void **rval_ptr);   /*成功结束进程为0,否则为错误编码*/   pthread_join使一个线程等待另一个线程结束。   ...代码中如果没有pthread_join主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。...加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行。   ...头文件 : #include   函数定义: int pthread_join(pthread_t thread, void **retval);   描述 :pthread_join()函数,以阻塞的方式等待

5.5K20
领券