多线程问题求助
是这样的
我有一个主线程A和两个主线程创建的子线程1,2,还有两个队列1和2,队列1是常规的一些内容,队列2是临时的一些内容。
要求主线程监听一个端口,如果没有消息的话,则正常启动线程1,线程1从队列1中取单元操作;
如果有消息的话则放入队列2,暂停线程1,启动线程2,线程2从队列2中取单元操作。等队列2取空了则恢复线程1.
求教应该怎么用线程互斥或者同步来完成,求伪代码,我在waitforsingleobject这儿看的有点乱,诚心求教。
[解决办法]
看需求,应该是主线程启动1,2线程并挂起2号线程。当有数据来时,挂起1号线程,恢复2号线程,当2号线程取空队列时,恢复1号线程并挂起自己。
主要就是用
SuspendThread
ResumeThread
这两函数。
[解决办法]
问题1,运行线程2时为何要挂起线程1?1,2之间有何冲突?
问题2,主线程除了监听端口,往队列2里放数据外还干其他什么事没?
问题3,数据到达是否频繁,线程2处理数据是否需要消耗大量时间?
按你的描述,个人觉得线程2和主线程可以合并。大致就是
主线程:起线程1while(1){ 等待数据到达 挂起线程1 处理到达的数据(原线程2的工作) 恢复线程1}线程1没什么需要同步的地方。
[解决办法]
楼主肯定是不知道条件变量这个东西,线程在进程启动后全部跑起来然后挂在条件变量上等待即可,去了解一下.
[解决办法]