C 如何等待线程启动?

C 如何等待线程启动?,c,multithreading,winapi,C,Multithreading,Winapi,我等待线程启动的方式是创建一个事件,当我创建一个线程时,我向它传递这个事件,当线程开始执行时,它向这个事件发送信号(我已经在等待)。我对这种方法没有问题,但我想知道Windows是否为此提供了特殊功能。您当前的解决方案是解决此问题的完美方案。你没有理由也不需要寻找更好的解决方案。当然,线程API不提供任何内置机制,因此您必须实现一些东西。你所做的是一个很好的解决问题的方法。是的,这是一个经典。出于好奇,我为什么要知道呢?我只在两个星座中的一个星座中使用过线程:a)经典的“消费者线程”,它从队列中

我等待线程启动的方式是创建一个事件,当我创建一个线程时,我向它传递这个事件,当线程开始执行时,它向这个事件发送信号(我已经在等待)。我对这种方法没有问题,但我想知道Windows是否为此提供了特殊功能。

您当前的解决方案是解决此问题的完美方案。你没有理由也不需要寻找更好的解决方案。当然,线程API不提供任何内置机制,因此您必须实现一些东西。你所做的是一个很好的解决问题的方法。

是的,这是一个经典。出于好奇,我为什么要知道呢?我只在两个星座中的一个星座中使用过线程:a)经典的“消费者线程”,它从队列中提取任务b)“每个任务线程”它执行一些特定的冗长的、可能是阻塞的操作(比如加载文件)。问题(a)需要工作线程阻止,主线程可以随时发布任务,不需要关心,而问题(b)中的线程已经知道启动时要做什么。在这两种情况下,主线程只需要在工作完成时发出信号,而不是在线程启动时发出信号。@Damon:一种常见的情况是将临时初始化信息传递给线程。在这种情况下,线程需要在读取完数据后发出信号,以便该数据的所有者可以释放资源。转移所有权并不总是可能的,而且通常比实现启动同步更复杂。如果新线程在另一个进程内运行,则情况尤其如此。