小编Vuz*_*uzi的帖子

C ++,信号和线程

我在使用线程和信号设计应用程序的主要工作流时遇到了一些困难。

我的目标是要有一个主线程,捕获信号以及n个其他线程定期执行操作(实际上是在树莓派上使用传感器,并保存检索到的数据)。我希望能够以一种干净的方式关闭程序,即在关闭传感器之前等待传感器完成数据写入(如果它们是在发生信号时)。我正在使用C ++ 11。

现在,我有这个例子:

#include <iostream>
#include <thread>
#include <csignal>
#include <mutex>

#define NUM_THREAD 3;

static volatile int stop = 0;     // If the threads needs to stop
std::mutex m;                     // Mutex

void threadHandle(int tid) {
    while(1) {
        std::cout << "Launched by thread " << tid << std::endl;
        std::this_thread::sleep_for(std::chrono::seconds(2));
        std::cout << "I have sleep well " << tid << std::endl;

        m.lock();
        if(stop) {
            std::cout << "Thread " << tid << " needs to stop" << std::endl;
            m.unlock();
            break;
        } …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading signals c++11

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

Akka流 - 将ByteString流拆分为多个文件

我正在尝试将传入的Akka字节流(从http请求的主体,但也可以从文件中)拆分为多个定义大小的文件.

例如,如果我上传一个10Gb文件,它将创建类似10Gab的1Gb文件.这些文件会随机生成名称.我的问题是我真的不知道从哪里开始,因为我读过的所有响应和示例都是将整个块存储到内存中,或者使用基于字符串的分隔符.除了我不能真正拥有1Gb的"块",然后只是将它们写入磁盘..

有没有简单的方法来执行这种操作?我唯一的想法是使用这样的东西http://doc.akka.io/docs/akka/2.4/scala/stream/stream-cookbook.html#Chunking_up_a_stream_of_ByteStrings_into_limited_size_ByteStrings但转换成类似的东西FlowShape[ByteString, File],将自己写入文件块直到达到最大文件大小,然后创建一个新文件等,然后回传创建的文件.这看起来像一个不正确使用Akka的残暴想法..

提前致谢

scala stream akka akka-stream

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

标签 统计

akka ×1

akka-stream ×1

c++ ×1

c++11 ×1

multithreading ×1

scala ×1

signals ×1

stream ×1