gpt4 book ai didi

c - 有没有办法重用 pthreads?

转载 作者:太空狗 更新时间:2023-10-29 15:30:01 25 4
gpt4 key购买 nike

我有一个被调用数百万次的函数,这个函数完成的工作是多线程的。这是函数:

void functionCalledSoManyTimes()
{
for (int i = 0; i < NUM_OF_THREADS; i++)
{
pthread_create(&threads[i], &attr, thread_work_function, (void *)&thread_data[i]);
}
// wait
}

我在每次函数被调用时创建线程,我为每个线程提供它的数据结构(在算法开始时设置一次)以在 thread_work_function 中使用。 thread_work_function 简单地处理一系列数组,thread_data 结构包含指向这些数组的指针和每个线程负责的索引。

虽然以这种方式对算法进行多线程处理确实提高了 20% 以上的性能,但我的分析表明对 pthread_create 的重复调用导致了显着的开销。

我的问题是:有没有办法在每次调用函数时都调用 pthread_create 来实现我的目标?

问题已解决。

谢谢你们,非常感谢你们的帮助!我写了一个解决方案 here使用您的技巧。

最佳答案

只需启动一组固定的线程并使用线程间通信系统(例如环形缓冲区)将数据传递给处理。

关于c - 有没有办法重用 pthreads?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12268514/

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