【发布时间】:2011-06-29 21:41:21
【问题描述】:
在 Linux 中工作并使用 C++。 我有一个启动线程的程序。 我需要主线程和子线程通过 printf 和 scanf 进行通信 (两个线程的代码都使用 scanf 和 printf 并假设它与 stdin 和 stdout 通信。我必须保持这种方式)。 我设法覆盖了 printf 和 scanf,所以我可以完全控制这些函数 (而且我可以使用 *pthread_self* 来识别调用线程)。
剩下要做的是创建 2 个文件句柄,一个用于通信的每个方向,并缓冲通信。 如何做到这一点?
写入磁盘上的文件并不能解决我的问题,因为通信可能很长,而且我无法将其存储在磁盘上。但是,我知道读取线程会在数据写入后不久读取数据,因此不需要太多缓冲。
特别重要的是,如果一个线程调用 scanf("%s", &x) 那么它将被阻塞,直到另一个线程写入一些字符串 and添加空格(因此字符串在完全写入之前不会被读取)。
【问题讨论】:
标签: multithreading printf scanf filehandle