如上图,我有一个大小为10的循环数组,有读和写两个索引(r|w),r不会越过w,从左至右只会读取r到w索引之间的数据,w会一直往前写入数据,写到第下标10就转到下标0继续写入,但w也不会越过r。
简而言之,只有w写入过数据的位置才能读,只有r读过的位置w才能重新写,两条线程分别控制r和w,如果我在准备读取数据前,先上锁,然后读取r到w之间的数据的个数,然后解锁,之后则把这些确定个数的数据进行处理,处理完成再上锁把r这个索引往前更新,标定为前面处理过的数据已使用,可以进行写入新数据。两条线程仅上锁确定索引然后解锁,它们操作的数据区域不在同一处,请问有何种漏洞吗?
我也可以这样做,做任何事情前先上锁,然后读取r的个数,然后处理完数据(耗时任务)再解锁,我是否有必要这样做呢?
pthread 多线程对循环数组进行操作保证数据安全的两个疑问
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
悬赏问题
- ¥30 STM32 INMP441无法读取数据
- ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
- ¥15 用visualstudio2022创建vue项目后无法启动
- ¥15 x趋于0时tanx-sinx极限可以拆开算吗
- ¥500 把面具戴到人脸上,请大家贡献智慧
- ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
- ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
- ¥30 c#打开word开启修订并实时显示批注
- ¥15 如何解决ldsc的这条报错/index error
- ¥15 VS2022+WDK驱动开发环境