这种情况会导致竞争条件吗?

时间:2014-03-03 13:36:05

标签: race-condition

假设我们有一个使用邮箱的消息传递系统。当发送到完整的邮箱或尝试从空邮箱接收时,进程不会阻塞,而是会返回错误代码。该过程仅通过反复尝试来响应错误代码,直到成功为止。这会导致竞争状况吗?

2 个答案:

答案 0 :(得分:0)

首先,我建议您查看race condition的含义。

如果邮箱系统在接收/检索电子邮件时处理“原子性”,则没有竞争条件。您的应用可能会永远循环尝试检索邮件,但这不是竞争条件。

现在,让我们假设邮箱系统不使用任何类型的锁定机制。如果同时您正在尝试读取是否存在新邮件,则新邮件将到达邮箱,您可能会读取未完成的邮件,因为仍然会到达。

在最好的情况下,您会收到未完成的消息,但通常会因为指针无效而发生崩溃等。

答案 1 :(得分:0)

您描述的情况本身不会导致竞争,但您为响应错误而采取的措施可能会将“检测到此邮箱为空”消息推送到空邮箱。从两个线程做到这一点,你很容易就会收到两封邮件。