2012-02-20 127 views
3

我见过用过这种模式,但我不记得用来描述它的术语(因此我不能谷歌它更多地了解它):什么是这种称为竞争条件的解决方案?

基本上,这就是你已经有了一个由多个线程使用的资源,但不是锁定对资源的访问,提交事务,然后解锁访问,资源具有自己的“队列”,并且每个进程“将”在该资源上执行的职能“发布”到它的队列。然后资源按照它发布的顺序执行并执行每个函数,确保它的状态永远不会被破坏。

+0

听起来只不过是异步和延迟执行。不知道该模式是否有名称。也不确定它是否与竞争条件本身有关(因为它只是同步对单个资源的访问,但跨多个资源的访问似乎不受管制 - 并且与之前描述的事务锁定相比,其可预测性更低)。 – Thilo 2012-02-20 08:36:58

+0

这是一个非常常见的模式,这是COM公寓线程如何工作的。所以,任意地,“公寓线程”是一个标签。基础数据结构是“生产者/消费者队列”。 COM中的消息队列。 – 2012-02-20 12:46:25

+0

也许是交易记忆? :http://en.wikipedia.org/wiki/Software_transactional_memory – Ben 2012-02-20 15:44:17

回答

1

我认为这里可以使用的最具体的术语是演员。我觉得一个演员为“线”(或线状的过程)这是...

  • ...活着的:它可以独立于其他演员
  • 行动...有状态:它可以存储数据并确保正确访问。

这样一个演员的实现经常是处理消息的同步队列的线程。

只是调用这个“同步”是正确的,但不具体。

0

它被称为同步。从你的描述看来,你似乎正在使用互斥锁。

+0

这似乎适用于两种模式,一种是锁定和提交,另一种是他询问的排队。 – Thilo 2012-02-20 08:39:14

+0

呵呵,好的,谢谢。虽然..我认为同步更适用于消除竞争条件的任何策略(互斥锁不会是同步访问的一种形式)的通用术语?) – Nick 2012-02-20 08:39:55