标签: mutex

C#中各种线程同步选项有什么区别?

有人可以解释之间的区别:

  • 锁定(someobject){}
  • 使用Mutex
  • 使用信号量
  • 使用Monitor
  • 使用其他.Net同步类

我只是想不出来.在我看来前两个是一样的?

c# multithreading synchronization mutex locking

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

用c ++ 11等价替换boost :: thread和boost :: mutex是否明智?

动机:我之所以考虑是因为我的天才项目经理认为提升是另一种依赖,而且它很可怕,因为"你依赖它"(我试着解释提升的质量,然后放弃一段时间后:(我想做的更小的原因是我想学习c ++ 11的功能,因为人们会开始在其中编写代码.所以:

  1. 是否有1:1的映射#include<thread> #include<mutex>和boost等效?
  2. 你会考虑用c ++ 11的
    东西替换boost东西吗?我的用法是原始的,但有什么例子,当std没有提供什么提升?或者(亵渎)反之亦然?

PS我使用GCC所以标题就在那里.

c++ multithreading boost mutex c++11

150
推荐指数
4
解决办法
4万
查看次数

返回声明应该在锁定内部还是外部?

我刚刚意识到,在我的代码中的某个地方,我在锁内部有一个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)

我应该使用哪一个?

.net c# multithreading mutex

134
推荐指数
5
解决办法
4万
查看次数

锁定解锁的互斥锁的效率如何?互斥锁的成本是多少?

在低级语言(C,C++或其他)中:我可以选择在拥有一堆互斥(如pthread给我或者本机系统库提供的内容)或者对象的单个互斥之间.

锁定互斥锁的效率如何?即可能有多少汇编指令,以及它们花了多少时间(在互斥锁解锁的情况下)?

互斥量需要多少钱?真的有很多互斥体是一个问题吗?或者我可以在代码中抛出尽可能多的互斥变量,因为我有int变量并且它并不重要?

(我不确定不同硬件之间有多大差异.如果有,我也想了解它们.但大多数情况下,我对常见的硬件感兴趣.)

关键是,通过使用许多互斥体,每个互斥体只覆盖对象的一部分而不是整个对象的单个互斥体,我可以安全地使用许多块.我想知道我应该走多远.即我应该尽可能地尝试保护任何可能的块,无论多么复杂和多少互斥量这意味着什么?


关于锁定的WebKits博客文章(2016)与此问题非常相关,并解释了自旋锁,自适应锁,futex等之间的差异.

multithreading mutex locking blocking

134
推荐指数
5
解决办法
5万
查看次数

.NET Framework中的并发HashSet <T>?

我有以下课程.

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)

是否有更好的解决方案,直接进入现场并保护它免受多线程的并发访问?

c# multithreading mutex locking thread-safety

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

boost shared_mutex的示例(多次读取/一次写入)?

我有一个多线程应用程序,必须经常读取一些数据,偶尔会更新数据.现在,互斥锁可以保持对数据安全的访问,但是它很昂贵,因为我希望多个线程能够同时读取,并且只在需要更新时将其锁定(更新线程可以等待其他线程完成) .

我认为这是boost::shared_mutex应该做的,但我不清楚如何使用它,并没有找到一个明确的例子.

有没有人有一个我可以用来开始的简单例子?

c++ multithreading boost mutex boost-thread

113
推荐指数
4
解决办法
9万
查看次数

108
推荐指数
4
解决办法
10万
查看次数

106
推荐指数
8
解决办法
11万
查看次数

Java中有Mutex吗?

在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

106
推荐指数
5
解决办法
19万
查看次数

JavaScript中是否需要互斥锁?

我看到过这个链接:在JavaScript中实现互斥.另一方面,我已经读过javascript中没有线程,但究竟是什么意思呢?

当事件发生时,代码可以在哪里中断?

如果JS中没有线程,我是否需要在JS中使用互斥锁?

具体来说,我想知道如何使用功能由所谓的影响setTimeout()XmlHttpRequestonreadystatechange对全局访问的变量.

javascript multithreading mutex

100
推荐指数
5
解决办法
5万
查看次数