c++ - 继续执行另一个线程

标签 c++ c multithreading winapi

我目前正在使用 WinAPI,并且已经开始使用线程。我的程序有 n 个相互协作的线程。有一个 main 线程,它将一些数据写入特定的内存位置,并等待直到使用特定内存位置的线程处理数据。然后整个过程再次重复,没有终止任何线程。

我的问题是忙于等待第二个线程浪费了太多时间。 有没有办法暂停当前线程(为其他线程留出时间)或以不同方式解决这个问题?

请帮忙。

最佳答案

我猜您当前正在轮询/忙于在主线程中等待,不断检查工作线程将设置的某些完成标志的状态。正如您所注意到的,这是不可取的,因为您只是在等待工作人员完成时使用了一定比例的 cpu 带宽。在某些情况下,这会减少您的工作人员安排的时间,从而延迟其完成。

相反,您可以使用一个同步对象,例如 EventSemaphore让您的主线程休眠,直到工作人员发出完成信号。

关于c++ - 继续执行另一个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16693954/

相关文章:

c++ - 从非托管代码 Hook 到 AppDomain.UnhandledException 事件

C - 带信号量的多个 fork

java - Thread 类中的 Run 方法未被调用

java - 以原子方式更新两个 ConcurrentHashMap

c - 如何排序文件输出?

c - 指向共享变量的指针互斥

c++ - 编写程序以便为 if 语句分配适当的编号

c++ - 集成三个变量的函数 C++

c++ - 如何使用 VS2010 为 windows x64 位编译 Leptonica 库?

c++ - 使用 C++ 将半字写入闪存时的 ARM Cortex-M HardFault 异常