多线程问题:在多个数据源上获取和设置数据

时间:2019-03-27 14:08:05

标签: multithreading python-2.7

我正在模拟一个人群感应系统,其中多个设备是多核的,需要彼此同步数据。

我有N台设备。每个设备都有多个线程M,并且它是数据D(在这种情况下是具有整数值的字典)

每个N * M线程在运行时必须通过从其他N - 1个设备(如果有)中收集数据来计算设备的D ['generic_key'](因为其他一些{{ 1}}设备可能没有generic_key的值,或者可能不在该设备的邻居中),计算新数据(这是自动完成的),然后将数据更新为第一个具有要提供的数据的设备地方

基本上,N - 1更新应按顺序进行。多线程部分是,对于D['any_kind_of_key']device1线程将针对不同的密钥更新M

我的问题是如何解决1个键的竞争条件:

示例

D个设备中,我有3个设备N,它们具有密钥(d1, d2, d3)的数据

key_1更新值的同时如何安全地锁定d1[key1]d2[key1],以便之后d3可以更新值?

  

d3通过工作d1创建new_value   所有[d1[key], d2[key1], d3[key1]]的值都用新值替换

这是一个原子序列

  

d1, d2, d3做同样的事情

这是一个原子序列

  

d1做同样的事情

这也是一个原子序列

0 个答案:

没有答案