linux – 重用线程pthread

linux – 重用线程pthread,第1张

概述我有一个程序,它不断地完成一些工作(比如服务器)和几个线程.哪个是从pthread库重用线程的正确方法?或者我每次都被迫创建一个新线程.我想至少重用pthread_t结构.我在考虑这样的事情: int main() { pthread_t threads[some value]; while (1) { get work; find a free threa 我有一个程序,它不断地完成一些工作(比如服务器)和几个线程.哪个是从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线程,通常使用互斥锁来保护队列,使用条件变量来允许线程等待工作.您可能需要一个布尔变量来跟踪程序是否正在关闭.

在伪代码中,每个线程执行此 *** 作:

>获取互斥锁.
>检查程序是否正在关闭,如果是,请释放互斥锁并终止.
>检查队列是否为空.如果是,则阻止条件变量并转到步骤2.
>从队列中取出最高职位.
>释放互斥锁.
>做好这份工作.
>转到第1步.

要求线程完成工作,请执行以下 *** 作:

>分配新的工作对象.
>填写要完成的工作(可以是指向函数的指针和该函数的参数).
>获取互斥锁.
>将作业添加到队列中.
>发信号通知条件变量.
>释放互斥锁.

去关机:

>获取互斥锁.>将关闭布尔值设置为true.>广播条件变量.>释放互斥锁.>加入所有主题.

总结

以上是内存溢出为你收集整理的linux – 重用线程pthread全部内容,希望文章能够帮你解决linux – 重用线程pthread所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1027659.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存