小编use*_*674的帖子

Zmq 上下文 - 我应该在新线程中创建另一个上下文吗?

我有几个服务器应用程序使用我创建的共享 ZMQ 类。有时,这些服务器在处理请求时,需要向另一个 ZMQ 服务器发送消息。我对 ZMQ 还很陌生,所以我想确保我正确理解了这一点。

处理服务器侦听器的类创建一个zmq::context_tzmq::socket_t,并绑定套接字。这在一个单独的线程上无限运行。当这个服务器需要在另一个函数中发送一条消息(完全从这个 ZMQ 类中删除)时,我是否需要在这里生成一个新的上下文并发送消息,或者我应该以某种方式将相同的上下文传递给这个类(在一个不同的线程),绑定一个新的套接字然后从那里开始?

如果是前者,我用什么数字来初始化新上下文是否重要,还是没问题context( 1 )?指南中有一部分说创建第二个上下文就像拥有多个 ZMQ 实例,我认为这并不重要,因为它仅用于发送文件然后关闭。但我可能错了?

c++ zeromq

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

如何在 C++ 中动态分配连续的二维数组?

我需要一个二维字符数组,用于垃圾 API,它绝对需要使用数组而不是向量(非常强调这一点,因为我所有的搜索都只有“使用向量”的答案。我希望我能)。

我认为这样做的方法是分配一个大小为行*字符长度的外部数组,而不是这样做:

char** arr;
arr = new char*[100];
// for loop that allocates the internal arrays
Run Code Online (Sandbox Code Playgroud)

但我不确定需要使用什么方法才能使其连续?我是否需要先分配一个巨大的一维数组,然后将一维数组分块分配给二维数组?

c++ arrays

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

解锁lock_guard手动未定义/坏设计?

我有这样的代码:

do {
    lock_guard<mutex> lck(globalMtx);
    auto itr = someMap.end();
    for (/*conditions*/){
        //do stuff with itr and someMap
        // if a certain condition is met, we exit function with a return
        // globalMtx needs to be unlocked at that time
    }
    if (itr == someMap.end()){
        // I need to unlock the globalMtx here
        globalMtx.unlock()
        // A command is sent to modify someMap before we try again
        this_thread::sleep_for( chrono::seconds( 5 ) );
    } else {
        break;
    }
} while (true);
Run Code Online (Sandbox Code Playgroud)

正如您在if范围中看到的那样,我需要解锁globalMtx,以便我可以在再次执行之前修改"someMap".我已经阅读了许多线程/论坛/使用mutex.lock()/ unlock()手动锁定互斥锁是一个坏主意,通常不再使用c …

c++ mutex c++11

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

标签 统计

c++ ×3

arrays ×1

c++11 ×1

mutex ×1

zeromq ×1