分几种情况
1,如果这两个线程属于同一个进程,该数据是该进程的全局变量;
2,如果这两个线程属于同一个进程,该数据是其中一个线程的全局变量;
3,这两个线程互不相干,该数据不是这两个线程中的变量,但这两个线程均可以访问;对于在多个线程中要进行多次访问的这种情况,应该如何锁定该数据???而且互不干扰,也不至于锁死???
1,如果这两个线程属于同一个进程,该数据是该进程的全局变量;
2,如果这两个线程属于同一个进程,该数据是其中一个线程的全局变量;
3,这两个线程互不相干,该数据不是这两个线程中的变量,但这两个线程均可以访问;对于在多个线程中要进行多次访问的这种情况,应该如何锁定该数据???而且互不干扰,也不至于锁死???
解决方案 »
- 飓风工作室招聘
- CreateThread 传参数的小问题,解决马上结贴,在线等了
- 急,如何发CTRL+V 按键消息到某个窗口 下面代码怎么不能用啊
- Combox 自绘问题?如何改变Combox的高度和字体呢?有人做过没?
- 一个搞不清的问题,客户端closesocket后再connect就报WSAENOTCONN这个错误,为啥,---*们 虾们(详细问题如下)
- 如何将RealPlayer或者Media Player嵌入到应用程序中
- 如何看自已上网后的IP?
- 怎样COPY一个绝对路经下的所有文件,到目标路经,大家看看.
- 求助啊!!!!
- 运用STL容器和算法
- 如何找到在局域网中某台机器的一个已知端口号被占用?
- 那里有VC网络编程这方面好书下的
变量声明加上 volatile
用户调用访问资源的函数时就自动锁定了。产生死锁的必要条件是多个资源多把锁时, 占用一个资源后又要另一个资源。因此在设计时把相关资源放在一起用一把锁就不会死了。
你好,我现在已经把对资源的访问做成类,当我在类里用Event进行加锁的,在这个类的每个访问的函数中都加上WaitSingleObject,用RsetEvent和SetEvent进行加锁和解锁。但是我在多个线程里对多个资源访问时,就已经锁死了。
2. EVENT不适合作锁, 换MUTEX试一下, 使用CSingleLock的LOCK和UNLOCK。
3. 不要在锁定一个资源后再去锁定另一个资源。
若是同时需要这两个资源, 就用一把锁。
//加入你的操作
::LeaveCriticalSection(&g_Cs_Count);
//加入你的操作
ReleaseMutex(m_hMutex);//释放独占权
{
CSingleLock.LOCK(mutex)
.....
CSingleLock.UNLOCK(mutex)。
}
ReadSource()
{
CSingleLock.LOCK(mutex)
.....
CSingleLock.UNLOCK(mutex)。
}
所有对资源的操作(读、写)都用这两个函数完成。不就没有任何问题了吗?