我遇到了当前同步挡的比赛情况



我是一个新手,一段时间以来一直在努力解决同步问题,尤其是在同步块实现方面。首先,是的,这是一门课,我不想要解决方案,因为我需要学习这些东西。相反,我很好奇我目前的方法大致存在哪些问题,这样我就可以更好地理解我做错了什么,并找到解决方案。

我正在尝试为任务执行器创建一个FIFO阻塞队列。对实现的限制包括不使用信号量、锁或java同步机制。同步的实现必须通过基元对象监视器和同步块来完成。最初的代码有一个内置的种族条件,我需要在这些限制下解决。目前我已经设法限制了这种情况的发生,但比赛情况仍然大约每10000个任务发生一次。从本质上讲,有些任务是两次启动的。包括当前实现的一部分,它处理从队列中获取任务以供线程执行。

这是当前实现的一部分,用于处理从缓冲区获取任务以供执行。

好的,所以我通过将任务结果、nextout、count和return移动到synchronized(notfull(块中来解决问题。不确定这是否是正常情况下的最佳解决方案,但在目前的限制下,它已经解决了我的比赛条件问题。

任务执行和所做的更改。

相关内容

  • 没有找到相关文章

最新更新