问题标签 [boost-mutex]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - boost-threads:如何将 scoped_lock 传递给被调用者?
我是 boost 线程库的新手。我有一种情况,我获得了scoped_lock
一个函数,需要在被调用者中等待它。
代码位于以下行:
基本上,在 function 中d()
,我需要访问我获得的作用域锁,a()
以便我可以等待它。我怎么做 ?(其他一些线程会通知)。
或者我可以直接等待互斥锁而不是锁吗?
任何帮助表示赞赏。谢谢 !
c++ - 在两个不同的类中使用 Boost 互斥锁
我在以下方法中使用 MessageQueue 类中的 boost mutex 作为私有成员
reqCollection 是一张地图
当我尝试初始化互斥锁时,内部请求出现以下错误
据我在谷歌here中搜索此错误,该问题的解决方案表示为
为互斥锁或包含互斥锁的类放置(智能)指针
但这是否意味着我只能通过传递指针在整个项目中使用一个互斥变量?为什么 boost 正在保护互斥锁
错误是
错误 7 错误 C2248:“boost::mutex::mutex”:无法访问在类“boost::mutex”中声明的私有成员
c++ - Boost::mutex 性能与 pthread_mutex_t
我pthread_mutex_t
事先使用了 s 。代码有时会卡住。我有几行代码分散在我包装的函数中......
不知道代码是如何/在哪里卡住的,我把它切换pthread_mutex_t
到了boost:mutex
1)如果我只是用第 1 行替换第 1 行和第 3boost::lock_guard<boost::mutex> lock(map_mutex);
行,并且一切正常,那么 pthread 实现会出现什么问题?
2)我是否通过切换到提升来放弃性能。这里的关键部分对时间非常敏感,所以我希望互斥锁非常轻量级。(C++,红帽)
c++ - 你如何在一个类的不同实例之间共享一个互斥锁?
我想知道如何在另一个类的不同实例中共享一个类中的互斥锁。
现在,我有一个类 Indexer,它有一个 Boost mutex 和 condition_variable 作为私有成员变量。我在 main 中创建了 Indexer 类的 auto_ptr,并将 Indexer 的指针传递给另一个类 Robot 的实例。
我这样做如下:
机器人的构造函数是:
机器人的标题看起来像:
但是,由于互斥锁是不可复制的,我得到一个错误。
我正在考虑制作互斥锁和条件变量 shared_ptrs 但我读到这可能会导致意外行为。
有人可以告诉我正确/正确的方法吗?
谢谢!
c++ - 多线程程序生产者/消费者 [boost]
我正在玩boost库和C++。我想创建一个包含生产者、消费者和堆栈的多线程程序。生产者填充堆栈,消费者从堆栈中删除项目(int)。一切正常(pop,push,mutex)但是当我在线程中调用pop/push时,我没有任何效果
我做了这个简单的代码:
在我在 VC++ 2010 / win7 中运行它之后,我得到:0 0
你能帮我理解为什么当我从 main 调用 fillStack 函数时我得到了效果,但是当我从线程调用它时没有任何反应?谢谢
c++ - 堆损坏和互斥锁
我在应用程序中有一个严重的错误,我试图了解发生了什么。我在崩溃之前有一些日志。我无法简单地重现该错误。
上下文 :
在我的日志中(我正在使用 LOG4CXX)我有以下顺序:
我怎么可能在 thread1_3 之前记录 thread2_2 ?由于堆损坏可以解锁锁而不会导致程序崩溃,并且第二个线程可以获取此锁并在应用程序崩溃之前执行一些代码?
我在 Windows 7 下。我的 C++ 程序在编译器优化打开的情况下进入发布模式。
c++ - 如何扩展 C++ 升压列表容器以使用升压升级互斥体实现线程安全实现?
我编写了一些示例测试代码来验证使用 boost 升级互斥锁在 boost 列表容器上实现读/写互斥锁的功能。我有 10 个线程,5 个是读者,5 个是作者。
我使用智能指针来简化内存管理并允许同一对象包含在多个列表中。编写者不断地删除对象并将其重新插入到各自的列表中,而读者则定期迭代列表。这一切似乎都按预期工作,但是当调用列表擦除成员函数时,当我已经拥有它时,它必须找到要删除的条目。
擦除方法是否足够聪明,可以知道要擦除的条目而无需再次搜索,或者它是否经过优化以在列表元素已知时消除搜索?如果它进行搜索,那么是否有一种直接的方法来扩展它,以便只能在从列表中实际删除时应用唯一锁,而不是在查找列表元素时应用?这是我与 boost 1.51 库链接并使用 vs2008 测试的代码。
c++ - Boost::thread 互斥问题:尝试锁定,访问冲突
我目前正在学习如何使用 c++ 进行多线程,为此我使用 boost::thread。我将它用于一个简单的游戏引擎,运行三个线程。
其中两个线程正在读取和写入相同的变量,这些变量存储在我称为 PrimitiveObjects 的东西中,基本上是球、盘子、盒子等。
但我不能真正让它工作,我认为问题是两个线程试图同时访问相同的内存位置,我试图使用互斥锁来避免这种情况,但现在我没有运气,这行得通有时,但如果我发送垃圾邮件,我最终会遇到这个例外:
这些是我为此使用的对象内部的函数,调试器也将异常归咎于它们。
这是我用来生成每个原始对象的函数。(更新)
有任何想法吗?编辑:新函数(2),myMutex 现在是对象私有的。添加了我用来生成原始对象的函数。
编辑:
这是堆栈指向的代码,它在物理线程中运行:
其他相关代码:
c++ - 将 boost::bind 与包含 boost::mutex 的类一起使用
我正在使用 watchdir 将项目添加到内部集合的服务器上工作。watchdir 由这样创建的线程定期浏览:
该fileFoundCallback
参数也通过以下方式创建boost::bind
:
我想使用互斥锁保护我的集合免受并发访问,但我的问题是boost::mutex
该类是不可复制的,因此我的类中不能有互斥锁,Collection
因为boost::bind
需要可复制的参数。
我不喜欢静态互斥锁的想法,因为它在语义上是错误的,因为这里互斥锁的作用是防止我的集合在被修改时被读取。
我能做些什么来解决这个问题?
c++ - 通过锁定互斥锁导致的分段错误
我是来问问你的意见的。我是一个大项目的新手,所以我将尝试描述我所看到的简单示例。
顶部回溯是
似乎互斥锁不存在,但它是在类构造函数中创建的。例子:
这对我来说似乎很奇怪,因为我不知道段错误的原因或找到根本原因的可能方法。我很高兴听到您对此的任何建议。