【发布时间】:2018-03-29 13:32:07
【问题描述】:
以下程序:
#include <stdio.h>
#include <pthread.h>
char input;
void *
dpy(void *args)
{
printf("\n[input] = %c\n", input);
}
void *
read(void *args)
{
pthread_t child;
printf("Write whatever - press 'F' to end\n");
do
{
scanf("%c", &input);
printf("begin\n");
pthread_create(&child, NULL, dpy, NULL);
pthread_join(child, NULL);
printf("end\n");
}
while (input!='F');
printf("done\n");
}
void
main ()
{
pthread_t parent;
pthread_create(&parent, NULL, read, NULL);
pthread_join(parent, NULL);
}
- 从标准输入读取字符并在“F”字符处停止,
使用
parent线程。 - 为用户键入的每个字符打印消息
[input] = .., 使用child线程。
问题
每条消息具有以下模式:
开始..结束
在scanf 调用后显示两次(在read 例程的循环内),尽管它应该等待来自下一个scanf 调用的下一个字符输入。
有什么想法吗?
【问题讨论】: