微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

线程如何将其写入矩阵的不同单元中

如何解决线程如何将其写入矩阵的不同单元中

| 我有一个全局矩阵(类型为vector >),我需要几个线程才能按照我所说的方式写入其中。 起初,我考虑只使用一个互斥锁,因为我担心竞争条件(access + write可能不是原子的) 然后,我使用互斥矩阵。我对此不太确定。似乎是同样的问题。 你能帮我吗?如果需要,我会添加更多详细信息。 谢谢     

解决方法

        您只需要一个互斥锁即可保护被多个线程访问的对象,其中至少有一个线程会修改该对象。 如果在任何线程访问矩阵之前(例如在启动线程之前)调整了矩阵的大小,则只有在多个线程访问同一单元格时才需要互斥量。如果您的线程正在访问不同的单元,则只要它们都不调整矩阵的大小,一切就可以了。 如果一个线程写入一个单元,而另一个线程从同一单元读取,则两个线程在访问该单元之前必须锁定相同的互斥体。如果两个线程写入同一单元,则两个线程必须再次锁定相同的互斥锁。该互斥锁可以与用于其他单元的互斥锁不同,也可以是相同的互斥锁。 如果一个线程修改了矩阵结构,而其他线程正在访问矩阵,则所有涉及的线程必须锁定同一互斥锁。这可以是与用于单个单元格的任何互斥锁不同的互斥锁,也可以是相同的互斥锁。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。