多线程join的时机

发布于 2022-10-15 08:53:50 字数 216 浏览 24 评论 0

打算设计这么一个东西
1.循环检测列表T,表里有元素就取来处理 就这样一直循环
2.其他外部可以通过ADD方法往列表T里加入元素 这个加入动作是在外部任何时候发生

本来想说创建个线程A绑定循环函数然后就join,但是这个时候就死循环了一直在检测
然后又想说再ADD的时候再创建1个线程 这个时候再JOIN 这个是也是处理1个就死循环了
比较乱 希望大家指点下

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

难理解 2022-10-22 08:53:50

其实是关键问题是那个ADD的时机 他可以在任何时间点加入

橘味果▽酱 2022-10-22 08:53:50
  1. void *thread_func( void *arg );
  2. int running = 0;
  3. int main(int argc, char *argv[])
  4. {
  5.     int ret = 0;
  6.     pthread_t thread_1 = 0;
  7.     void *thread_result = NULL;
  8.    
  9.     running = -1;
  10.     ret = pthread_create( &thread_1, NULL, thread_func, NULL );
  11.     if( ret ) {
  12.         perror( "Thread creation failed" );
  13.         return EXIT_FAILURE;
  14.     }
  15.     sleep( 10 );  // waiting
  16.    
  17.     running = 0;
  18.     ret = pthread_join( thread_1, &thread_result );
  19.     if( ret ) {
  20.         perror( "thread join failed" );
  21.         return EXIT_FAILURE;
  22.     }
  23.    
  24.     printf( "Thread joined.\n" );
  25.     return 0;
  26. }
  27. void *thread_func( void *arg )
  28. {
  29.     while( running ) {
  30.         // do your work
  31.     }
  32.    
  33.     return NULL;
  34. }

复制代码

走走停停 2022-10-22 08:53:50

一般的都是先create好 然后再找个合适的时机一起join
如果你自己这里只能create1个线程 其他的都是外层在create的 那你要什么时候去join

泪眸﹌ 2022-10-22 08:53:50

一般的都是先create好 然后再找个合适的时机一起join
如果你自己这里只能create1个线程 其他的都是外层在create的 那你要什么时候去join

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文