做一个上位机软件,需要发送命令给设备,并同时不断接收设备返回的数据,但是发现不能再两个不同的线程中同时访问设备,否则会产生冲突,请问有什么解决办法吗
解决方案 »
- 如何在画图的时候让图片倾斜,实现时钟指针的效果
- 放假学习UDP网络编程及P2P方面有什么好的推荐资料
- CString 类定义的字符串如何转化为char 型指针(急!在线等候)
- 怎么在一个Dialog上,加入ToolBar和Statusbar
- 如何检测到Dialog的ESC事件的发生,我在OnKeyDown和WindowProc里都不行
- 98环境下,此段远线程插入报错,请大家批改
- 菜鸟问题,图象的Gamma是什么东东,那位知道指点一二,对了在图象中怎么调节这个Gamma,谢谢
- recv的问题?
- 那里有最基本使用线程编写的原程序?
- listbox控件出现滚动条的自画问题(过客就给分)
- casyncsoket的疑问
- 双缓冲画图,图像数据画不进去的问题
// 互斥量类
// 关键数据,代码的保护
#ifndef _MyMutex_H_
#define _MyMutex_H_class MyMutex
{
private:
HANDLE SynMutex;public:
MyMutex();
~MyMutex();
void Build(LPCTSTR mutexName); // 建立互斥器
bool EnterSynCode(); // 进入同步代码区,无限等待
bool EnterSynCode(DWORD WaitTime); // 进入同步代码区,有限等待
bool LeaveSynCode(); // 离开关键代码区
};#endif#include "stdafx.h"
#include <windows.h>
#include "xMutexET199.h"MyMutex::MyMutex()
{
SynMutex = NULL;
}MyMutex::~MyMutex()
{
if (SynMutex != NULL)
{
CloseHandle(SynMutex);
SynMutex = NULL;
}
}void MyMutex::Build(LPCTSTR mutexName)
{
if(SynMutex)
{
CloseHandle(SynMutex);
SynMutex = NULL;
}
SynMutex = OpenMutex(SYNCHRONIZE, FALSE, mutexName);
if (SynMutex == NULL)
SynMutex = CreateMutex(NULL, FALSE, mutexName);
}bool MyMutex::EnterSynCode()
{
DWORD const WaitState = WaitForSingleObject(SynMutex, INFINITE);
return(true);
}bool MyMutex::EnterSynCode(DWORD WaitTime)
{
DWORD const WaitState = WaitForSingleObject(SynMutex, WaitTime);
if (WAIT_TIMEOUT==WaitState) return(false);
return(true);
}bool MyMutex::LeaveSynCode()
{
return(!!ReleaseMutex(SynMutex));
}
InitializeCriticalSection
EnterCriticalSection
LeaveCriticalSection
DeleteCriticalSection