在C:
如果我有3个线程,2个线程将字符串附加到全局字符串(char*),1个线程正在从该字符串中读取.
假设2个线程每秒附加大约8 000个字符串,第3个线程也经常读取.它们是否有可能在完全相同的时间追加并覆盖彼此的数据或同时读取并获得不完整的字符串?
是的,这会很快被破坏
您应该使用互斥锁或读/写锁定机制来保护对此字符串的访问.
我不确定你在哪个平台,但如果你在*nix平台上,请查看pthreads库.
我没有为windows开发,所以我不能指出你的任何线程功能(虽然我知道在Win32中有很多好的线程API
编辑
@OP你有没有考虑过每秒附加8000个字符串(你没有说明每个字符串有多大)的内存问题.如果您从未从全局字符串中删除数据,那么您将很快耗尽内存.你可能想要考虑以某种方式限制这个字符串的大小,并设置某种系统来从你的字符串中删除数据(读者线程将是最好的地方).如果您已经这样做了,那么请忽略上述内容.
| 归档时间: |
|
| 查看次数: |
893 次 |
| 最近记录: |