相关疑难解决方法(0)

我需要一个互斥量来阅读吗?

我有一个具有状态(一个简单的枚举)的类,可以从两个线程访问.为了改变状态,我使用互斥锁(boost :: mutex).检查状态是否安全(例如比较state_ == ESTABLISHED)还是在这种情况下我是否必须使用互斥锁?换句话说,当我只想读取一个可以由另一个线程同时写入的变量时,我是否需要互斥锁?

c++ multithreading mutex

39
推荐指数
3
解决办法
3万
查看次数

我是否需要同步对int的线程访问?

我刚刚编写了一个由多个线程同时调用的方法,我需要跟踪所有线程何时完成.代码使用此模式:

private void RunReport()
{
   _reportsRunning++;

   try
   {
       //code to run the report
   }
   finally
   {
       _reportsRunning--;
   }
}
Run Code Online (Sandbox Code Playgroud)

这是代码中唯一_reportsRunning值被更改的地方,该方法需要大约一秒钟才能运行.

偶尔当我有超过六个左右的线程一起运行报告时,_reportsRunning的最终结果可以降到-1.如果我换到电话_runningReports++_runningReports--一个锁,则行为似乎是正确的,一贯的.

所以,问题是:当我在C++中学习多线程时,我被教导你不需要同步调用递增和递减操作,因为它们总是一个汇编指令,因此线程不可能在中间切换-呼叫.我是否正确地教过,如果是这样的话,那对C#来说怎么回事?

c# c++ multithreading locking

20
推荐指数
2
解决办法
7189
查看次数

标签 统计

c++ ×2

multithreading ×2

c# ×1

locking ×1

mutex ×1