线程里面的变量需不需要互斥访问?

BruceLee2020 2015-10-21 04:19:46
class TComReadThd : public TThread
{
private:
int m_iCmd; //命令类型
int m_iWaitLen; // 想读取的长度
int m_iRecLen; // 已读取的长度
char Recbuf[1024];
protected:
void __fastcall Execute();
public:
void SetWaitLen(int iLen);
__fastcall TComReadThd(bool CreateSuspended);
};
SetWaitLen 函数功能是 设置m_iWaitLen的值,供主线程调用

void __fastcall Execute(); 函数里面有 对m_iWaitLen的读写

问题:
a: m_iWaitLen 需不需要做线程互斥?
b: 如果把 m_iWaitLen定义为全局变量,需不需要 做线程互斥?
...全文
165 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
我不懂电脑 2015-10-22
  • 打赏
  • 举报
回复
如果把 m_iWaitLen定义为全局变量,并且这个变量需要修改,需要 做线程互斥?
draculamx 2015-10-22
  • 打赏
  • 举报
回复
如果你对 m_iWaitLen 的读写操作,都在同一个线程中,那么不需要互斥 是否对一个变量进行互斥处理,并不是看这个变量是在哪里定义的,是否是全局变量,而是要看有多少个线程会同时读写这个变量,如果是1个以上,那么一般情况下是要互斥的。

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧