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

BruceLee2020 BruceLee2020 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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定义为全局变量,需不需要 做线程互斥?
...全文

相关推荐

C#多线程互斥实例 多线程获取同一变量

C#多线程互斥实例 多线程获取同一变量(不重复)。是一个很好的学习例子

jintou8

Qt 多线程访问同一个变量

1.Qt下,多线程使用互斥锁安全访问同一全局变量;2.源码中定义了ThreadA和ThreadB,定义变量后,依次调用函数start()来启动重写的run()函数

huina_zhao

浅谈互斥锁为什么还要和条件变量配合使用

mutex体现的是一种竞争,我离开了,通知你进来。 cond体现的是一种协作,我准备好了,通知你开始吧。 互斥锁一个明显的缺点是它只有两种状态:锁定和非锁定。而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足,它常和互斥锁一起配合使用。使用时,条件变量被用来阻塞一个线程,当条件不满足时,线程往往解开相应的互斥锁并等待条件发生变化。一旦其他的某个线程改变了条件变量,他将通知相应的条件变量唤醒一个或多个正被此条件变量阻塞的线程。这些线程将重新锁定互斥锁并重新测试条件是否满足。一般说来,条件变量被用来进行线程间的同步。 两个线程操作同一临界区时,通过互斥锁保护,若A线程已经加

weixin_38610012

Linux C 多线程编程之互斥锁与条件变量实例详解

一、互斥锁 互斥量从本质上说就是一把锁, 提供对共享资源的保护访问。 1. 初始化: 在Linux下, 线程的互斥量数据类型是pthread_mutex_t. 在使用前, 要对它进行初始化: 对于静态分配的互斥量, 可以把它设置为PTHREAD_MUTEX_INITIALIZER, 或者调用pthread_mutex_init. 对于动态分配的互斥量, 在申请内存(malloc)之后, 通过pthread_mutex_init进行初始化, 并且在释放内存(free)前需要调用pthread_mutex_destroy. 原型: int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restric attr); int pthread_mutex_destroy(pthread_mutex_t *mutex); 头文件: 返回值: 成功则返回0, 出错则返回错误编号. 说明: 如果使用默认的属性初始化互斥量, 只需把attr设为NULL. 其他值在以后讲解

weixin_38743076

互斥锁、条件变量、信号量总结

互斥锁、条件变量、信号量是系统为实现多线程(多进程)访问共享资源或共同协作的同步机制

dongyuesy
评论 2
收藏 已收藏
分享
返回顶部
BruceLee2020
C++ Builder 13,871 成员 102,696 内容