Tag: 互斥体

C ++ 11相当于boost shared_mutex

是否有boost::shared_mutex的C ++ 11等价物。 或者另一种解决scheme来处理在C + + 11多读者/单写作者的情况?

为什么Mutex在处置时不被释放?

我有以下代码: using (Mutex mut = new Mutex(false, MUTEX_NAME)) { if (mut.WaitOne(new TimeSpan(0, 0, 30))) { // Some code that deals with a specific TCP port // Don't want this to run at the same time in another process } } 我已经在if块中设置了一个断点,并在Visual Studio的另一个实例中运行相同的代码。 正如所料, .WaitOne呼叫阻止。 然而,令我吃惊的是,一旦我继续执行 ,并且using块终止,我在第二个进程中得到一个关于一个被废弃的Mutex的exception。 解决的办法是调用ReleaseMutex : using (Mutex mut = new Mutex(false, MUTEX_NAME)) […]

boost shared_mutex的例子(多读/一写)?

我有一个multithreading的应用程序,必须经常读取一些数据,偶尔会更新数据。 现在一个互斥体可以安全地访问这个数据,但是这样做很昂贵,因为我希望多个线程能够同时读取,并且只有在需要更新时才locking它们(更新线程可以等待其他线程完成) 。 我认为这是boost::shared_mutex应该做的,但我不清楚如何使用它,并没有find一个明确的例子。 有没有人有一个简单的例子,我可以用它来开始?

为什么pthreads的条件variables函数需要一个互斥量?

我在读pthread.h ; 与条件variables相关的函数(如pthread_cond_wait(3) )需要一个互斥量作为参数。 为什么? 据我所知,我将创build一个互斥体来作为这个参数? 那个互斥体应该做什么?

pthread_cond_wait(&cond_t,&mutex); 解锁,然后locking互斥锁?

我正在使用pthread_cond_wait(&cond_t, &mutex); 在我的程序,我想知道为什么这个函数需要作为第二个参数互斥variables。 pthread_cond_wait()在开始(开始执行pthread_cond_wait() )时解锁互斥锁,并在完成时locking互斥锁(就在离开pthread_cond_wait()之前)?

使用互斥锁来防止同一程序的多个实例运行安全吗?

我正在使用此代码来防止我的程序的第二个实例同时运行,是否安全? Mutex appSingleton = new System.Threading.Mutex(false, "MyAppSingleInstnceMutx"); if (appSingleton.WaitOne(0, false)) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); appSingleton.Close(); } else { MessageBox.Show("Sorry, only one instance of MyApp is allowed."); } 我担心,如果引发exception,并且应用程序崩溃,互斥量仍将保留。 真的吗?