LinuxLinux学习之路

APUE读书笔记-12线程控制(8)

2020-06-29  本文已影响0人  QuietHeart

10、线程和输入输出

在前面我们介绍了pread函数和pwrite函数,这些函数在多线程的环境中是非常有用的,因为进程中所有的线程共享同样的文件描述符号。

假设线程A和B在如下的情况同时读写文件:

如果线程A在调用完lseek之后,但是read之前的时候,线程B调用了lseek,那么两个线程将会读取同样的数据,显然这样的结果很可能就不是我们所需要的了。

为了解决上述问题,我们使用pread,这个函数将lseek和read合并为一个原子的操作:

使用线程A,我们就可以保证线程A从300开始读取,而线程B一定是从700开始读取。同理,我们可以使用pwrite来解决多个线程同时写同一个文件导致的竞争条件。

译者注

原文参考

参考: APUE2/ch12lev1sec10.html

11、总结

线程提供了在unix系统中将一个任务分割的可选的途径.使用线程,可以在各个线程之间方便地共享数据,但是也会引入一些同步的问题。在本章,我们介绍了如何使用线程并且处理这些线程之间的同步问题,我们也讨论了线程中存在的可重入性.我们也看到了线程如何和一些面向进程级别的系统调用进行交互。

译者注

原文参考

参考: APUE2/ch12lev1sec11.html

上一篇 下一篇

猜你喜欢

热点阅读