Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 控制线程挂起并恢复一组工作线程_C_Unix_Pthreads - Fatal编程技术网

C 控制线程挂起并恢复一组工作线程

C 控制线程挂起并恢复一组工作线程,c,unix,pthreads,C,Unix,Pthreads,进程中有一个控制线程和一组工作线程。工作模式如下: (1) 所有工作线程和控制线程都在运行 (2) 当控制线程检查某些条件更改时,它将挂起所有工作线程 (3) 检查所有工作线程是否挂起后,控制线程修改内存中的某些内容 (4) 修改后,控制线程恢复所有工作线程。 我的问题是: (1) 在步骤2和步骤4中,如何控制线程挂起和恢复所有工作线程?我考虑使用pthRead COndIsAuthor和pthReadμCONDYORD信号,但对于控制线程和工作线程来说似乎只是OK。 (2) 在步骤3中,如何控

进程中有一个控制线程和一组工作线程。工作模式如下:
(1) 所有工作线程和控制线程都在运行
(2) 当控制线程检查某些条件更改时,它将挂起所有工作线程
(3) 检查所有工作线程是否挂起后,控制线程修改内存中的某些内容
(4) 修改后,控制线程恢复所有工作线程。
我的问题是:
(1) 在步骤2和步骤4中,如何控制线程挂起和恢复所有工作线程?我考虑使用pthRead COndIsAuthor和pthReadμCONDYORD信号,但对于控制线程和工作线程来说似乎只是OK。 (2) 在步骤3中,如何控制线程检查所有工作线程是否挂起?我考虑使用计数器,有什么好的方法?< /P>
In step 2 and step 4, how can control thread suspend and resume all worker threads? I consider using pthread_cond_wait and pthread_cond_signal, but it seems only OK for a control thread and a worker thread.
您可以为pthread中的线程分配优先级,也可以为控制线程分配更高的优先级,并安排控制线程先工作,让其他线程等待

 After checking all worker threads are suspended, the control thread modifies some contents in memory.
它是共享内存吗?如果是共享内存,您可以使用互斥锁,允许一个线程一次访问关键部分


如果您有一个代码可以很容易理解您的问题。

您真的需要挂起线程吗?如果我理解你是对的,你是在试图解决问题。在这种情况下,我建议pthread\u rwlock\t为您的控制线程提供对共享内存的独占访问。

我可以看到一个点列表,但没有真正的问题。你想要什么?你已经试过什么了?但我的建议是查找消息队列或/和pthread_cond_signal@hetepeperfan:谢谢你的回复!我真正想要的是如何实现:一个控制线程挂起并恢复一组工作线程。您的建议:查找消息队列或/和pthread_cond_信号。您能详细解释一下吗?谢谢您的回复,但我想这不是我想要的答案。@NanXiao:编辑了答案