allkillers 发表于 2016-04-29 15:07

写两个线程交替打印a和b

很久之前看到一道题:
1. 写两个线程交替打印字符‘a'和字符’b'
2. 要尽量效率高,尽量少的利用cpu资源。

当时觉得很简单,我觉得我当时的写法会是:
thread1_start()
{
    while(true)
    {
      if(a)
      {
             printf("a\n");
             a =0;
             b =1;
      }
    }
}

thread2_start()
{
    while(true)
    {
      if(b)
      {
             printf("b\n");
             b =0;
             a =1;
      }
    }
}

当然上述写法正确性绝对没问题。但无端浪费多少cpu资源啊,想想真是惭愧。

现在再回想起来,想了好多方案,最后发现牵扯知识点好多,我依然写不出更好的,更加惭愧啊。想100个人会写出100个不同的代码来,抛砖引玉吧,大家有时间可以想想,把自己的代码贴出来,不用很完整的代码,随手把关键点贴出来就可,交流下不挺好。

allkillers 发表于 2016-04-30 18:27

是我的问题太easy了还是太无趣了,没人参与啊。哎

mordorwww 发表于 2016-05-03 10:03

除了同步,还有什么好的方法呢
页: [1]
查看完整版本: 写两个线程交替打印a和b