新手求救:现在有2个共享数据结构的资源,暂且叫做A和B吧线程1会对A进行处理(增删等操作)线程2会对B进行操作(同上)线程3要求对A.B同时进行操作(同上)我用2个临界区对象X Y分别来控制A B线程1运行的时候ENTER(A) LEAVE(A);
线程2运行的时候ENTER(X) LEAVE(Y);
而3要求是同时拥有2个临界区对象,这样写基本线程3就跑步起来了请问怎么处理比较合适呢?如果用互斥对象或者事件,怎么合理的设置才能让线程3跑起来?新手,分不多,处理过相同问题的可否指点一下呢
线程2运行的时候ENTER(X) LEAVE(Y);
而3要求是同时拥有2个临界区对象,这样写基本线程3就跑步起来了请问怎么处理比较合适呢?如果用互斥对象或者事件,怎么合理的设置才能让线程3跑起来?新手,分不多,处理过相同问题的可否指点一下呢
解决方案 »
- 怎样定时从数据库中取出数据绘制图形!
- 如何在打开的位图上通过鼠标拖动画虚线框?
- 可以利用一张灰度图像构建三维图形吗???
- 关于调试dll的问题,请有经验的VC朋友入内
- 為什麼用DeviceIoControl(..VWIN32_DIOC_DOS_INT25..)絕對磁盤讀就藍屏當機?
- 看看用程序调用存储过程来恢复数据库为什么出错?
- 急!急!请问如何在分发网页上的activex控件的同时安装卸载程序?
- 五子棋游戏
- 程序结束时,how释放已定义CPtrArray的变量m_RegArray占用的内寸? 用m_RegArray.RemoveAll()无效?;
- 关于MFC对话框类和另一个类之间变量调用问题
- 求解?
- 水波动态效果演示程序
{
ENTER(A)
........
LEAVE(A)
}
在线程3内你也只需要Enter(X),Enter(Y),就可以了。当线程1用完A后,按照系统的线程调度策略,线程3应该会阻塞其他线程对A的控制权,即Enter(X),如果Enter(Y)没有被阻塞,那么线程3就可以运行了。如果阻塞,继续等待就可以了。
另外无论在单核和多核的计算机上我想都应该是同个道理。
2---C
3---A B
4---C D
5---A B C D按这个思路,我每个都设置了临界区来保护数据资源奇怪的是5总是运行不起来,其他的线程都没有问题