gpt4 book ai didi

C 读和线程安全 (linux)

转载 作者:太空宇宙 更新时间:2023-11-04 12:58:03 24 4
gpt4 key购买 nike

如果你在两个不同的线程中调用相同文件描述符的read(或write,或两者)会发生什么(假设我们对本地文件,它是一个套接字文件描述符),而不显式使用同步机制?

Read 和 Write 是系统调用,因此,在单核 CPU 上,“同时”执行两个读取可能很不幸。但是多核...

linux 内核会做什么?

让我们更笼统一点:其他内核(如 BSD)的行为是否总是相同?

编辑:根据close documentation ,我们应该确保文件描述符没有被其他线程中的系统调用使用。因此,在关闭文件描述符之前需要显式同步(因此,如果可能调用它的线程仍在运行,则也围绕读/写)。

最佳答案

任何系统级(系统调用)文件描述符访问在所有主流类 UNIX 操作系统中都是线程安全的。尽管根据年龄的不同,它们不一定是安全信号。

如果您从两个不同的任务中调用readwriteaccept 或类似的文件描述符,那么内核的内部锁定机制将解析争论。

对于读取,每个字节可能只被读取一次,写入将以任何未定义的顺序进行。

stdio 库函数 freadfwrite 和 co。默认情况下,控制结构也有内部锁定,但通过使用标志可以禁用它。

关于C 读和线程安全 (linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35059660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com