gpt4 book ai didi

c - 同时启动 pthreads

转载 作者:太空狗 更新时间:2023-10-29 16:09:38 25 4
gpt4 key购买 nike

确保一堆 pthreads 同时启动的不同方法有哪些?

我只能找到一种方法,即。在主线程中初始化一个barrier,然后在新创建的 pthreads 中等待它。

最佳答案

这几乎完全我过去是如何做到的。

main:
claim mutex
for each desired thread:
start child
release mutex
:

child:
claim mutex
release mutex
:

请注意,这实际上并不能保证所有线程都在第一个线程开始做某事之前就已经启动,只是主线程已经创建了它们。

为此,您可以使用类似以下的方法:

main:
claim mutex
set unstarted to 0
for each desired thread:
start child
add 1 to unstarted
release mutex
:

child:
claim mutex
subtract 1 from unstarted
while unstarted > 0:
release mutex
yield // if necessary
claim mutex
release mutex
:

无论线程必须执行的任何初始化操作都将发生在 claimsubtract 之间。


我从进一步的调查中看到,障碍实际上是一种更优雅的方式来做到这一点。它们在我使用的 pthread 实现中实际上不可用,这就是为什么我的代码看起来有点冗长。

但是,如果有人使用 v6 之前的 pthreads 或不同的线程方法(无障碍),我将保持原样,因为正如所问的问题,这 一种不同的方式。

关于c - 同时启动 pthreads,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3957168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com