首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

getchar()会使线程死锁么,该如何解决

2012-10-18 
getchar()会使线程死锁么主线程:main(){//.........while(1)putchar(getchar)}辅助线程:void f (void){wh

getchar()会使线程死锁么
主线程:
main()
{
  //.........

  while(1)
  putchar(getchar);
}

辅助线程:
void f (void)
{
  while(1)
  ungetc('1',stdin);
}

为什么每次打几个字符就不动了,然后按回车就又出几个,不按回车的话按什么出什么。我看了下好像是 f 被锁住了,是不是getchar()导致的。
我怀疑是由于两个线程同时在访问输入流导致的,因为我把两句放到同一个程序段就是对的。
是不是要用到临界区,如果是的话那参数可以直接是stdin么

我是想一个线程模拟键盘输入,另一个读出,有没有其他方法,方法不要太高深,我只是大一学生,才学完C

[解决办法]
getchar()

阻塞,等待用户输入
线程挂起
[解决办法]
getchar()函数的执行模式是阻塞式的,当需要接收字符流的时候,当前线程就会被挂起,其后的所有代码均要等待用户输入回车表示输入完毕后,线程才会被调度进入CPU时钟内执行其余的代码。

热点排行