
POSIX多线程程序设计
文章平均质量分 78
cqu20093154
这个作者很懒,什么都没留下…
展开
-
putchar的线程安全
前面调用的stdio函数一般都是printf和fgets。这些函数都是一次读入或输出一串数据。他们的操作是满足原子性的。ANSI C中同时还有putchar和getchar这样的函数。在新版本的putchar和getchar都是有加锁操作的,用来保护缓冲区不被破坏。我开始觉得这有点不好理解,以为单个字符原子性是可以保证的,其实不然。假设putchar用如下的伪代码实现:原创 2014-11-25 11:01:18 · 714 阅读 · 0 评论 -
多线程程序中的fork调用
多线程程序执行fork调用是一个比较复杂的问题。首先fork调用的行为大概是复制一个和父进程一样的子进程,然后两个进程以不同的值返回。理论上,父子进程应该是非常相似的。fork调用在单线程上是非常容易理解的,在多线程上就不太好理解了。在多线程程序里存在着多个执行流,换句话说,就是fork()调用点只是一个程序的一个并行执行分支而已。说了这么多,其实真相非常简单。下面是《POSIX多线程程序设计》中原创 2014-11-24 12:57:43 · 1928 阅读 · 0 评论 -
多线程程序中的stdio同步
在多线程程序中,stdio文件描述符是被各个线程共享的。如果多个线程需要进行stdio操作,那么stdio同步就是一个值得关注的问题了。为了实现stdio线程安全,flockfile和funlockfile调用就显得非常重要了。在很多的情况下,一些stdio操作以不被中断的顺序是非常重要的。原创 2014-11-25 10:42:25 · 701 阅读 · 0 评论