问题标签 [scoped-lock]
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++ - 提升 scoped_lock。这个会锁吗?
解决了
我将 bfs::directory_iterator 队列更改为 std::string 队列,出人意料地解决了这个问题。
嗨,我有一种直觉,我做错了事。
我已经实现(或试图)线程池模式。
N 个线程从队列中读取,但我遇到了一些麻烦。这是我得到的:
scoped_lock 是否仍然可以在 if 的主体内工作?我开始相信它不会(在运行了许多测试之后)。如果没有,是否有任何范围的方法来做到这一点(即不是显式锁定解锁方式)
提前致谢。
更新
将元素添加到队列的代码如下所示
我放置了一个 cout 来控制弹出的文件名,如果我推送 2 个文件(file1)和(file2),并使用 2 个线程,我会得到两个“file2”。
c++ - 错误使用 scoped_lock 导致的内存泄漏?
我有内存泄漏,我猜它是由 scoped_lock (Boost) 的错误使用引起的。但是,我无法找到确切的问题,而且我确实相信编写代码的方式也不完全正确。
代码在此类中: http ://taf.codeplex.com/SourceControl/changeset/view/31767#511225
主要的重要方法是ThreadedLoop()。基本上,此方法在线程中启动,并定期检查要为雅虎下载的市场数据。对于每只股票(或其他),将创建一个新线程(用于 ExecuteNextRequest() 方法),将指向包含股票名称的字符串的指针作为参数传递。这是我做的唯一内存分配,但它是在线程执行结束时释放的。
我也会对如何增强此代码感兴趣(当然我可以使用线程池,但这还不是重点)。非常感谢!
c++ - boost::recursive_mutex::scoped_locks 析构函数会引用未锁定的互斥锁吗?
调用unlock()
a后boost::recursive_mutex::scoped_lock
,锁对象会在其析构函数中以某种方式引用互斥锁吗?
在调用解锁后,锁仍然保留对互斥锁的引用(即mutex()
返回相同的指针)。release()
如果互斥体在锁超出范围之前被销毁,还必须在锁上调用吗?
c++ - boost::interprocess::scoped_lock 应用程序在锁内崩溃
我正在使用 boost::interprocess::scoped_lock,如果应用程序由于某种原因在范围内崩溃,互斥锁不会被释放。下次执行应用程序时(无需重新启动计算机),互斥锁将被锁定。
这是如何工作的?下面我给出一个简单的代码示例。
我最终做了一个像下面这样的超时。谁能想出一个不限制锁定时间的解决方案?
c++ - 寻找返回 boost::scoped_lock 的函数(或宏)
我正在寻找代码缩短的想法。我boost::scoped_lock
用来锁定 aboost::mutex
但我想缩短我正在编写的代码量。
目前我mutex
在我的班级和成员字段中定义了一个名为_sync
. 当我想锁定时,我必须写:
棘手的部分是这是一个作用域锁,所以我假设如果我编写一个静态函数来返回作用域锁,那么它会在它离开静态函数的函数作用域后立即解锁:
这种方法可以很容易地输入:
我的假设正确吗?scoped_lock
当我的静态函数返回时会立即解锁吗?
multithreading - Boost::thread、过剩和数据共享
我认为我的程序有问题。我必须创建一个与外部跟踪系统持续通信并从中获取点坐标的对象。我将这个类包装在 boost::thread 中,在第一次调用我的 Glut 应用程序之前,我创建了线程对象并将其分离
该类的显着方法的代码如下
我的 glutTimerFunc 调用一个更新函数,每个帧都使用 getAllPoints 方法选择点,而跟踪器线程不断更新它们(实际上访问数据的频率不同,线程调用比 glut 更新函数更快来电。
现在当程序退出时,我首先删除用 new 分配的 Tracker 对象,然后中断包含它的线程,但有时我会得到奇怪的行为,我认为它们是内存泄漏
获取具有不同访问频率的数据和使用 scoped_lock 的方式是否正确,或者我应该在 getAllPoints 方法中设置一些保护措施?
c++ - “嵌套”作用域锁
我缩短的简化类如下所示:
我想同步访问m_myVar
. 调用A::methodB()
时,线程两次进入同一个互斥锁的锁,明显阻塞在第一行。A::methodA()
有什么办法可以在再次通过时scoped_lock
不阻塞同一个线程?
当然,我可以调用m_mutex.unlock()
. 但这也会释放等待锁的其他线程——这绝对不是我想要的。
任何的想法?
最好的问候托比亚斯
c++ - boost::signals2::mutex 和 boost::thread::mutex 有什么区别?
我正在使用scoped_lock
并mutex
实现在另一个 SO question 中发布的 BlockingQueue版本,但是在 boost 中它们都有多个不同的预编译头文件。
scoped_lock
可通过“boost/interprocessor/sync/scoped_lock.hpp”和“boost/thread/mutex.hpp”获得
mutex
可通过“boost/thread/mutex.hpp”、“boost/signals2/mutex.hpp”和“boost/thread/win32/mutex.hpp”获得
我可以猜测“win32/mutex.hpp”以某种方式针对 Windows 进行了优化,但是其他的呢?他们之间有什么区别?
c++ - 在范围锁定之前检查可选的互斥锁
我有一个构造函数,可以选择允许用户将 ponter 传递给 Boost 互斥体。如果未提供互斥锁,则成员指针pMyMutex
设置为NULL
。如果他们愿意,这使用户可以选择应用一些线程安全。但是,出于明显的原因,我不能将 ascoped_lock
与这种检查一起使用:)
任何人都可以为这种要求提出一个简洁而简单的解决方案吗?
c++ - boost-threads:如何将 scoped_lock 传递给被调用者?
我是 boost 线程库的新手。我有一种情况,我获得了scoped_lock
一个函数,需要在被调用者中等待它。
代码位于以下行:
基本上,在 function 中d()
,我需要访问我获得的作用域锁,a()
以便我可以等待它。我怎么做 ?(其他一些线程会通知)。
或者我可以直接等待互斥锁而不是锁吗?
任何帮助表示赞赏。谢谢 !