C++线程通信问题:用线程模拟计算机网络中的客户端服务器之间的数据通信,我刚开始想到的方法是使用全
C++线程通信问题:用线程模拟计算机网络中的客户端服务器之间的数据通信,我刚开始想到的方法是使用全局变量用Sleep(数据到另一方的时间)来改变全局变量的值实现的,但是后...
C++线程通信问题:用线程模拟计算机网络中的客户端服务器之间的数据通信,我刚开始想到的方法是使用全局变量用Sleep(数据到另一方的时间)来改变全局变量的值实现的,但是后来发现如果你在sleep时间内又需要回复别的消息时候这种方法就行不通了,有没有一种方法能实习传输消息的同时确保自己又在运行呢?最好用windows.h来实现 mfc也可以 最好关键地方有备注哈
展开
1个回答
展开全部
1、对于线程间通信肯定是用临界区和信号量搭配
2、首先建立两个线程,建立一个公共的临界区和消息队列、每个线程建立一个等待信号量
3、在线程的工作函数中处理消息循环,当没有消息就处于等待信号量状态WaitForSingleObject(mEvent,INFINITE);有消息就按消息类型处理
4、当需要从一个线程发送数据到另一个线程,首先给公共消息队列添加消息和数据,然后设置信号量SetEvent(mEvent);唤起对方线程
2、首先建立两个线程,建立一个公共的临界区和消息队列、每个线程建立一个等待信号量
3、在线程的工作函数中处理消息循环,当没有消息就处于等待信号量状态WaitForSingleObject(mEvent,INFINITE);有消息就按消息类型处理
4、当需要从一个线程发送数据到另一个线程,首先给公共消息队列添加消息和数据,然后设置信号量SetEvent(mEvent);唤起对方线程
更多追问追答
追问
那数据到另一方所需时间怎么模拟
追答
那么就需要第三个中转线程,在第三个线程里面按照数据定义时间的长度进行分发,其实就是一个时间驱动型消息处理线程
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询