有人可以解释之间的区别:
我只是想不出来.在我看来前两个是一样的?
动机:我之所以考虑是因为我的天才项目经理认为提升是另一种依赖,而且它很可怕,因为"你依赖它"(我试着解释提升的质量,然后放弃一段时间后:(我想做的更小的原因是我想学习c ++ 11的功能,因为人们会开始在其中编写代码.所以:
#include<thread> #include<mutex>和boost等效?PS我使用GCC所以标题就在那里.
我刚刚意识到,在我的代码中的某个地方,我在锁内部有一个return语句.哪一个是最好的?
1)
void example()
{
lock (mutex)
{
//...
}
return myData;
}
Run Code Online (Sandbox Code Playgroud)
2)
void example()
{
lock (mutex)
{
//...
return myData;
}
}
Run Code Online (Sandbox Code Playgroud)
我应该使用哪一个?
在低级语言(C,C++或其他)中:我可以选择在拥有一堆互斥(如pthread给我或者本机系统库提供的内容)或者对象的单个互斥之间.
锁定互斥锁的效率如何?即可能有多少汇编指令,以及它们花了多少时间(在互斥锁解锁的情况下)?
互斥量需要多少钱?真的有很多互斥体是一个问题吗?或者我可以在代码中抛出尽可能多的互斥变量,因为我有int变量并且它并不重要?
(我不确定不同硬件之间有多大差异.如果有,我也想了解它们.但大多数情况下,我对常见的硬件感兴趣.)
关键是,通过使用许多互斥体,每个互斥体只覆盖对象的一部分而不是整个对象的单个互斥体,我可以安全地使用许多块.我想知道我应该走多远.即我应该尽可能地尝试保护任何可能的块,无论多么复杂和多少互斥量这意味着什么?
关于锁定的WebKits博客文章(2016)与此问题非常相关,并解释了自旋锁,自适应锁,futex等之间的差异.
我有以下课程.
class Test{
public HashSet<string> Data = new HashSet<string>();
}
Run Code Online (Sandbox Code Playgroud)
我需要从不同的线程更改字段"Data",所以我想对我当前的线程安全实现有一些看法.
class Test{
public HashSet<string> Data = new HashSet<string>();
public void Add(string Val){
lock(Data) Data.Add(Val);
}
public void Remove(string Val){
lock(Data) Data.Remove(Val);
}
}
Run Code Online (Sandbox Code Playgroud)
是否有更好的解决方案,直接进入现场并保护它免受多线程的并发访问?
我有一个多线程应用程序,必须经常读取一些数据,偶尔会更新数据.现在,互斥锁可以保持对数据安全的访问,但是它很昂贵,因为我希望多个线程能够同时读取,并且只在需要更新时将其锁定(更新线程可以等待其他线程完成) .
我认为这是boost::shared_mutex应该做的,但我不清楚如何使用它,并没有找到一个明确的例子.
有没有人有一个我可以用来开始的简单例子?
什么是Java中的互斥和信号量?主要区别是什么?
我们何时应该使用互斥锁?什么时候应该使用信号量?
在java中是否存在Mutex对象或创建一个?我问,因为用1许可证初始化的信号量对象对我没有帮助.想想这个案例:
try {
semaphore.acquire();
//do stuff
semaphore.release();
} catch (Exception e) {
semaphore.release();
}
Run Code Online (Sandbox Code Playgroud)
如果在第一次获取时发生异常,则catch块中的释放将增加许可,并且信号量不再是二进制信号量.
请问是正确的方法吗?
try {
semaphore.acquire();
//do stuff
} catch (Exception e) {
//exception stuff
} finally {
semaphore.release();
}
Run Code Online (Sandbox Code Playgroud)
上面的代码会确保信号量是二进制的吗?
java mutex semaphore java.util.concurrent concurrent-programming
我看到过这个链接:在JavaScript中实现互斥.另一方面,我已经读过javascript中没有线程,但究竟是什么意思呢?
当事件发生时,代码可以在哪里中断?
如果JS中没有线程,我是否需要在JS中使用互斥锁?
具体来说,我想知道如何使用功能由所谓的影响setTimeout()和XmlHttpRequest的onreadystatechange对全局访问的变量.
mutex ×10
c# ×3
locking ×3
semaphore ×3
boost ×2
c++ ×2
java ×2
.net ×1
blocking ×1
boost-thread ×1
c++11 ×1
concurrency ×1
javascript ×1
linux ×1