linux – 重用线程pthread
发布时间:2020-12-14 01:23:34 所属栏目:Linux 来源:网络整理
导读:我有一个程序,它不断地完成一些工作(比如服务器)和几个线程.哪个是从pthread库重用线程的正确方法?或者我每次都被迫创建一个新线程.我想至少重用pthread_t结构.我在考虑这样的事情: int main() { pthread_t threads[some value]; while (1) { get work; fi
我有一个程序,它不断地完成一些工作(比如服务器)和几个线程.哪个是从pthread库重用线程的正确方法?或者我每次都被迫创建一个新线程.我想至少重用pthread_t结构.我在考虑这样的事情:
int main() { pthread_t threads[some value]; while (1) { get work; find a free thread; pthread_create(free thread,do work); pthread_join(done threads); } 但我不知道如何正确释放线程或如何检查它是否是免费的. 解决方法
只需编写线程代码即可完成任何需要完成的工作.不要继续创建和连接线程.最简单的方法是使用
thread pool – 线程集合和线程安全的作业队列.池中的每个线程从队列中获取作业,完成该作业,然后等待另一个作业.
对于POSIX线程,通常使用互斥锁来保护队列,使用条件变量来允许线程等待工作.您可能需要一个布尔变量来跟踪程序是否正在关闭. 在伪代码中,每个线程执行此操作: >获取互斥锁. 要求线程完成工作,请执行以下操作: >分配新的工作对象. 去关机: >获取互斥锁.>将关闭布尔值设置为true.>广播条件变量.>释放互斥锁.>加入所有主题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |