【发布时间】:2014-01-24 20:18:01
【问题描述】:
是否有一些关于 printf() 的内置功能,可以让您使用单个线程而不是使用 cout/cerr 进行有序的屏幕 I/O?我正在寻找可以让我使用 cout/cerr 和 pthreads 进行同步屏幕输出的 something。到目前为止是空白的;可能需要在周末想出一些东西。
【问题讨论】:
-
一个只输出的线程怎么样,从管道中读取。而其他线程“发布”到管道,而不是输出?
是否有一些关于 printf() 的内置功能,可以让您使用单个线程而不是使用 cout/cerr 进行有序的屏幕 I/O?我正在寻找可以让我使用 cout/cerr 和 pthreads 进行同步屏幕输出的 something。到目前为止是空白的;可能需要在周末想出一些东西。
【问题讨论】:
这个包装器是如何工作的?我假设您希望一个线程的多个打印都连续显示...但是包装器如何知道这些“组”何时开始和停止?
既然您必须了解如何描绘这些“组”的印刷品,为什么不直接使用pthread_mutex_t?
void thread1(void) {
pthread_mutex_lock(&print_mutex);
printf("This ");
printf("is ");
printf("thread ");
printf("one.\n");
pthread_mutex_unlock(&print_mutex);
}
void thread2(void) {
pthread_mutex_lock(&print_mutex);
printf("This ");
printf("is ");
printf("thread ");
printf("two.\n");
pthread_mutex_unlock(&print_mutex);
}
【讨论】: