线程间通信的方式有多种,比如函数回调、(匿名)管道、发送消息等,对于Windows多线程,Windows提供了系统API函数PostThreadMessage可以给目标线程发消息,即通过发送消息的方式实现多线程间的通信。但使用PostThreadMessage函数时有些需要注意的细节,本文就来详细地介绍一下。
1、创建线程的函数返回时,新创建的线程的线程函数不一定运行起来了
在Windows系统中,我们可以调用CreateThread或__beginthreadex等函数去创建新的线程,在调用这些函数时指定线程对应的线程函数。当CreateThread或__beginthreadex返回时,只表示线程创建成功了,但线程函数不一定立即运行起来了。
有时我们需要在CreateThread或__beginthreadex返回后,等待线程函数运行起来,再进行后续操作。那我们如何知道线程函数已经运行起来呢?我们可以在调用CreateThread或__beginthreadex之前创建一个初始无信号的事件,然后把事件句柄作为