返回

C中线程之间最快的通信

发布时间:2022-08-13 07:46:45 228

这个问题与关于线程的问题类似,但有所不同。

我有一个程序可以将耗时的计算拆分为可以并行运行的不同作业。具体有步骤A,然后是步骤B,重复多次。所以程序运行ABABAB...等。

所以我有一个线程来控制事物,它的工作是告诉 N 个其他线程开始步骤 A,然后开始步骤 B。重要的是只有在上一步的所有线程都完成后才开始下一步。

所以伪代码可能类似于

 for (n=0;n<N;n++)

   Set variable in common memory to 1 for each thread to start step A;

 do {

  sum = 0; add variable for each thread to sum in a loop

   } while (sum!=0)

/* Threads set their variable to 0 when their calculations are complete*/

... < Similar code to start and monitor step B>

所以我的问题是…………有没有更好的方法在线程之间发送消息(我想答案是肯定的)……有更好的方法更快或至少一样快吗?(我想答案可能是否定的......但真的很想听听对此的任何想法)

哦,应该说目的是将每个进程锁定在单个内核上以提高速度。

编辑

非常感谢所有评论和关于查看C pthread 同步功能的建议——这个问题非常相关——但是,它并没有回答关于速度的问题。- 在@Willis 的回答中,他指出所有线程不断旋转以检查公共内存中变量的状态......并且评论提到了竞争条件和调试困难的潜在问题......

.... 尽管我试图在伪代码中概述该方法的潜在缺点,但我很想知道 pthread.h 中建议的“障碍”方法是否与伪代码中的方法一样快、更快或更慢代码。

也许我可以在上面的原始问题中更清楚......步骤A和B将需要重复1e6到1e9次 - 或者在合理的时间内尽可能多次,所以我非常警惕任何潜在的阻碍在同步线程....这有意义吗?

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(2)
按点赞数排序
用户头像
相关帖子
下一篇
java中的示例OAuth 1.0实现 2022-08-13 05:34:30