请教一个多线程的问题

shiyunliang 2008-09-24 11:55:34
只起了一个线程,该线程用到全局变量,请问要加锁不?
怎么加?麻烦举个例子?谢谢!
...全文
105 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nieoding 2008-09-24
  • 打赏
  • 举报
回复
传统的锁,我想有人会跟贴的,我个人比较喜欢用boost的线程及锁,干净,简明,扼要

#include <boost/thread/mutex.hpp>
#include <boost/thread/thread.hpp>
#include <boost/bind.hpp>
boost::mutex s_mutex;
int s_var;
void mythread()
{
boost::mutex::scoped_lock lock(s_mutex);
s_var++;
}
int main()
{
s_var = 0;
boost::thread thd(boost::bind(mythread));
thd.join();
}
yayafu 2008-09-24
  • 打赏
  • 举报
回复
在多个线程中访问变量才需要加锁,只在一个线程中访问不用加锁
简单的
EnterCriticalSection(&cs);
访问变量
LeaveCriticalSection(&cs);
icesnowjank 2008-09-24
  • 打赏
  • 举报
回复
这个全局变量 会在你开得这个线程之外的地方改变吗~~~ 是则加否则不加~~
OhFish 2008-09-24
  • 打赏
  • 举报
回复
要看你对这个全局变量的使用情况了,如果操作比较简单,不会发生资源竞争,读坏数据等问题,可以不加。
shiyunliang 2008-09-24
  • 打赏
  • 举报
回复
我主要的想法是:我只起了一个子线程,是不是就不用加锁了?
如果要加锁的话,那岂不是主线程访问全局变量的时候也要加锁?
wltg2001 2008-09-24
  • 打赏
  • 举报
回复
全局变量一般都是要加锁的
gavin1203 2008-09-24
  • 打赏
  • 举报
回复
看情况一般要加...同步访问才是最主要的...

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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