【发布时间】:2018-07-23 09:07:23
【问题描述】:
我正在创建一个需要通过标准输入(发送命令)与 C++ 引擎通信并读取其标准输出(读取引擎响应)的 GUI。我在 iOS 环境中执行此操作,因此我无法分叉进程并在它们之间进行通信,但我可以创建我认为应该可以正常工作的新线程。
我查看了与此类似的其他问题,但它们主要通过fork() 使用进程分叉,我无法使用。处理线程时是否有类似的方法?
C++ 中有什么东西可以通过标准输入/输出促进线程间通信吗?还是应该研究 C 函数(例如 pthread_create 和 dup2)?
编辑:有人指出我的问题是XY问题,所以为了更清楚地说明源问题:C++引擎是一个国际象棋游戏引擎,通常通过命令行界面运行。您可以通过 CLI 中的标准输入与它进行交互(即输入移动)。我将它打包在一个无法做到这一点(没有分叉或终端访问)的 iOS 应用程序中,所以我试图以编程方式模拟标准输入到引擎的主循环,它通过标准输入侦听用户输入。
【问题讨论】:
-
“通过标准输入/输出促进线程间通信?” 您为什么要这样做?线程之间有更好的通信方式。
-
@TheDude c++ 引擎正在通过标准输入侦听输入,因为您通常通过命令行与之交互,但我不能在 iOS 环境中这样做。
-
这和线程有什么关系?
-
@TheDude 我想在单独的线程中运行引擎,这样我就可以按照this recommendation 模拟标准输入。引擎循环运行,所以我需要将它与主 UI 线程分开
-
Sounds like an XY problem。你想做什么? C++ 引擎是干什么用的?听起来您是在询问您尝试的解决方案,而不是您的实际问题。
标签: c++ c multithreading pthreads