gpt4 book ai didi

c - C 中的线程安全 char 字符串

转载 作者:行者123 更新时间:2023-12-01 15:45:27 25 4
gpt4 key购买 nike

在 C 中:

如果我有 3 个线程,将字符串附加到全局 char 字符串 (char*) 的 2 个线程,和 1 个正在读取该 char 字符串的线程。

假设 2 个线程每秒钟追加大约 8000 个字符串,而第 3 个线程也经常读取。它们是否有可能同时追加并覆盖彼此的数据或同时读取并得到不完整的字符串?

最佳答案

是的,这会很快损坏

您应该使用互斥锁或读/写锁定机制来保护对此字符串的访问。

我不确定您使用的是什么平台,但如果您使用的是 *nix 平台,请查看 pthreads 库。

我不为 Windows 开发,所以我不能向您指出任何线程功能(尽管我知道 Win32 中有很多好的线程 API

编辑

@OP 您是否考虑过每秒附加 8000 个字符串(您没有说明每个字符串有多大)的内存问题。如果您从不从全局字符串中删除数据,您将很快耗尽内存。您可能想考虑以某种方式限制此字符串的大小,并设置某种系统以从您的字符串中删除数据(阅读器线程将是最好的地方)。如果您已经这样做了,请忽略上述内容。

关于c - C 中的线程安全 char 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1322566/

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