YiZhouair 2021-07-15 12:21 采纳率: 0%
浏览 5

pthread 多线程对循环数组进行操作保证数据安全的两个疑问

img

如上图,我有一个大小为10的循环数组,有读和写两个索引(r|w),r不会越过w,从左至右只会读取r到w索引之间的数据,w会一直往前写入数据,写到第下标10就转到下标0继续写入,但w也不会越过r。
简而言之,只有w写入过数据的位置才能读,只有r读过的位置w才能重新写,两条线程分别控制r和w,如果我在准备读取数据前,先上锁,然后读取r到w之间的数据的个数,然后解锁,之后则把这些确定个数的数据进行处理,处理完成再上锁把r这个索引往前更新,标定为前面处理过的数据已使用,可以进行写入新数据。两条线程仅上锁确定索引然后解锁,它们操作的数据区域不在同一处,请问有何种漏洞吗?
我也可以这样做,做任何事情前先上锁,然后读取r的个数,然后处理完数据(耗时任务)再解锁,我是否有必要这样做呢?

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-07 16:55
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 7月15日

悬赏问题

  • ¥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驱动开发环境