gpt4 book ai didi

c++ - 在没有系统调用(管道)的线程之间使用 std::istream 和 std::ostream

转载 作者:行者123 更新时间:2023-11-28 01:17:20 25 4
gpt4 key购买 nike

我正在寻找一种使用 <iostream> 创建线程间通信流的简单方法语义。我一直在寻找类似以下内容的内容:

#include <iostream>
#include <thread>

void thread1(std::istream from_main, std::ostream to_main) {
std::string s;
from_main >> s;
to_main << "Received:" << s << std::endl;
}
int main() {
std::istream from_thread;
std::ostream to_thread;
std::thread t(thread1, to_thread, from_thread);
to_thread << "Hi-Thread\n";
std::string s;
from_thread >> s; // Received:Hi-Thread
t.join();
}

有没有一种不使用 pipe 的简单方法来实现这一点? ,创建文件描述符并用系统调用填充代码?

最佳答案

看起来您需要的是一个单生产者单消费者 (SPSC) 队列,可能是无锁的。我会从那开始,如果你觉得非常需要建立语法糖来制作 operator<<均值 spsc_queue::push_back ,稍后补充。不要从C++的角度出发operator <<语法,然后思考“哦,这意味着 std::ostream”,然后导致“让我们定制一个 streambuf”。

保持简单。 SPSC queue .

关于c++ - 在没有系统调用(管道)的线程之间使用 std::istream 和 std::ostream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58252591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com