相关疑难解决方法(0)

二进制信号量和互斥量之间的区别

二进制信号量和互斥量之间是否存在差异,或它们基本相同?

glossary operating-system mutex semaphore binary-semaphore

787
推荐指数
19
解决办法
56万
查看次数

什么是互斥?

互斥体是一种经常用于解决多线程问题的编程概念.我向社区提出的问题:

什么是互斥锁,你如何使用它?

concurrency multithreading mutex

611
推荐指数
10
解决办法
26万
查看次数

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

boost scoped_lock vs普通锁定/解锁

我将使用boost::mutexboost/thread/mutex.hpp.有几种方法来锁定/解锁互斥:有scoped_lock,unique_lock,lock_guard,互斥的成员函数::lock()::unlock()和非成员函数lock()unlock().

我注意到,这boost::scoped_mutex是使用互斥锁的最流行的方法之一.为什么是最好的成员函数::lock()::unlock()

特别是,我为什么要使用

{
  boost::scoped_lock lock(mutex)
  // ...
  // read/output sharing memory.
  // ...
}
Run Code Online (Sandbox Code Playgroud)

而不是

mutex.lock()
// ...
// read/output sharing memory.
// ...
mutex.unlock()
Run Code Online (Sandbox Code Playgroud)

scoped_lock因为某些样式编码的观点还是::lock()/::unlock()"线程安全不够" 而更好?

c++ boost mutex thread-safety

41
推荐指数
2
解决办法
2万
查看次数

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

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

c++ multithreading mutex

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

有人可以解释Mutex及其使用方法吗?

我阅读了一些关于Mutex的文档,但我唯一的想法是它有助于防止线程访问已被其他资源使用的资源.

我从Code片段获得并执行哪个工作正常:

#include <windows.h>
#include <process.h>
#include <iostream>
using namespace std;


BOOL FunctionToWriteToDatabase(HANDLE hMutex)
{
    DWORD dwWaitResult;
    // Request ownership of mutex.
    dwWaitResult = WaitForSingleObject(
    hMutex, // handle to mutex
    5000L); // five-second time-out interval
        switch (dwWaitResult)
        {
        // The thread got mutex ownership.
            case WAIT_OBJECT_0:
            __try
            {
                // Write to the database.
            }
            __finally {
            // Release ownership of the mutex object.
            if (! ReleaseMutex(hMutex)) {
            // Deal with error.
        }
            break;
        }
            // Cannot get mutex ownership due …
Run Code Online (Sandbox Code Playgroud)

c++ windows multithreading mutex

6
推荐指数
1
解决办法
9623
查看次数

互斥还是不互斥?

如果我只有一个读者和一个作家,我需要互斥吗?读取器food.front()从队列中获取下一个command()并根据该命令执行任务.执行命令后,它会弹出命令.队列的编写者将命令推送到队列(food.push())上.

我需要互斥锁吗?我的读者(消费者)只执行if food.size() > 0.我正在使用读者线程并发送线程.

c++ windows multithreading mutex

5
推荐指数
1
解决办法
2058
查看次数

在Windows和Linux上进行线程化

我已经在互联网上看过用于在Windows上用C++制作多线程应用程序的教程,以及在Linux上做同样的其他教程,但不是同时用于两者.是否有可以在Linux或Windows上编译的功能?

c++ multithreading

4
推荐指数
2
解决办法
6508
查看次数

一些线程怎么可能永远不会执行?

int x = 0 // global shared variable
T1: for (i=0; i++; i<100) x++;
T2: x++ // no loop, just one increment
Run Code Online (Sandbox Code Playgroud)

T1和T2是单独的线程.我被告知x的最终值可以是1和101的值的任何值.这怎么可能?我想知道这可能只是1.

显然,执行顺序失败了,但我想知道是什么.

multithreading operating-system

0
推荐指数
1
解决办法
56
查看次数