Q
QiuXiaoFeng
Unregistered / Unconfirmed
GUEST, unregistred user!
在我的系统中运行两个线程,一个线程运行控制程序,实时的控制监视各个端口的状态
另一个线程运行串口通讯程序(大部分时间空闲),定时从串口接受数据,放入全局变量中
由控制线程读取,两个线程独立运行互不控制。在运行十几个小时后系统崩溃,用memproof
检查,发现大量的OVERRUN错误($0000001),有时出现ACCESS VIOLATION异常($C000005),
若停止通讯线程,则错误很少。
很显然,错误的根源是两个线程同时访问了同一变量,那么怎样在一个线程对变量操作
完成前禁止其他线程访问呢?我试用了互斥对象也不行,看资料说互斥对象,临界变量保护的
是某段代码,而我的两个线程毫无相同之处,急死我了!!!我该怎么办呢?
另一个线程运行串口通讯程序(大部分时间空闲),定时从串口接受数据,放入全局变量中
由控制线程读取,两个线程独立运行互不控制。在运行十几个小时后系统崩溃,用memproof
检查,发现大量的OVERRUN错误($0000001),有时出现ACCESS VIOLATION异常($C000005),
若停止通讯线程,则错误很少。
很显然,错误的根源是两个线程同时访问了同一变量,那么怎样在一个线程对变量操作
完成前禁止其他线程访问呢?我试用了互斥对象也不行,看资料说互斥对象,临界变量保护的
是某段代码,而我的两个线程毫无相同之处,急死我了!!!我该怎么办呢?