小编PMi*_*ler的帖子

使用try_lock增强锁定

我正试图用Boost 1.46.1来解决锁定问题 - 我尝试过一些东西,但我不开心 - 所以我很乐意听到来自干净利落的输入.

线程A:

  • 必须始终等待并获取关键数据部分的锁定
  • 更新一些关键数据
  • 手动解锁(或作用范围)

线程B - 必须永远不会阻塞(try_lock?) - 如果获得锁定,则从提到的关键部分读取数据

我不确定我是否需要shared_lock或者我是否可以解决这个问题.

编辑,我的代码看起来像:线程A:

{
 // Critical section
 boost::mutex::scoped_lock  lock( _mutex) ;
}
Run Code Online (Sandbox Code Playgroud)

线程B:

boost::mutex::scoped_lock lock(_mutex, boost::try_to_lock);
if( lock ) {

}
Run Code Online (Sandbox Code Playgroud)

但是我无法记录失败的try_lock - 所以我想知道它是否真的有效.

问候,保罗

c++ multithreading boost locking

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

将 boost asio 绑定到本地 tcp 端点

我正在尝试将 boost asio tcp 套接字专门绑定到本地网络接口。什么时候是bind()在套接字上调用方法的正确时间?

_endpoint 指向远程 IP/端口,例如 192.168.0.15:8888。

// Invoke async. connect. Immediate return, no throw.
_socket.async_connect(_endpoint,
boost::bind(&MyTransceiver::handleConnect, this,
    boost::asio::placeholders::error));
Run Code Online (Sandbox Code Playgroud)

在 中MyTransceiver::handleConenct(),我尝试了以下代码:

boost::asio::ip::tcp::endpoint local_end_point(
        boost::asio::ip::address::from_string("192.168.0.55"), 6543 );

    _socket.bind(local_end_point);
Run Code Online (Sandbox Code Playgroud)

在这里调用它失败,在async_connect() 调用之前调用它,还有一个“无效句柄”异常。

networking boost bind interface boost-asio

3
推荐指数
1
解决办法
5044
查看次数

我真的需要cmake进行构建自动化吗?

我正在调查cmake以允许在Win32平台上自动构建.对于我想要构建的所有运行时和库,Visual Studio(2008/2010)项目已经存在.

我遇到过cmake,但我不确定我是否真的需要它.正如文档所说,cmake生成VS项目,然后可以使用MSBuild构建它们.

由于项目本身已经存在(并且通过cmd行上的IDE或MSBuild很好地构建),我需要什么并使用cmake?仅用于目录/项目文件夹遍历?建立失败报告?

问候,保罗

msbuild build-automation cmake

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