论文部分内容阅读
并行多线程程序设计方法现在已经越来越普及,尤其是在实时系统中,已经成为提高系统实时性的关键技术之一。然而,对共享数据的同步访问机制又在一定程度上降低了程序的并发执行程度,系统的并发执行效率不能得到非常充分的发挥。本文从共享数据读写方式、线程同步方法入手,解决了变化数据的识别问题、同步过程产生的相互阻塞、等待问题,大大减少了并发任务之间数据交换产生的额外开销和等待时间,有效提高了系统并发执行效率。 本文在细致分析了组态软件数据特点的基础上,提出了附加索引数据结构与算法,该算法可以标记出数据集在两次更新之间发生变化的数据子集来加快数据交换过程,相对于传统的数据交换算法,该算法消除了搜索操作,数据集的写入效率、读出效率都得到了大幅提高,在数据集的读写访问操作非常频繁的情况下,效果尤为显著。 虽然一些研究者在共享数据同步访问方面提出了无阻塞、无等待数据结构与算法,但是他们所采用的方法都过于复杂,需要硬件并发原语的支持,而且到目前为止,还不能推广到普通的复合数据结构中。本文在分析和研究并发任务之间数据交换的基础上,提出了一种无等待的数据交换机制:双缓冲数据模式,该模式可以保证线程对数据的访问不会受到相关线程状态的影响,无论这些线程是处于停滞状态或者已经被终止,因此,可以有效的避免死锁、优先级倒置等问题。 最后,在这两种技术的基础上,本文建立了进程间实时数据通信模型,在有效降低进程间耦合程度的同时,可以没有延迟的把数据从多生产者并发的“推”到多个消费者中。该模型的建立解决了传统模型中存在的实时性差、任务并发度不高的问题,系统设计者可以更为自由的划分任务模块,实现负载平衡。 尽管本文提出的方法可以有效的解决工业监控组态软件中并发任务之间的数据交换问题,但是否适用于其它软件领域,本文做出了一些分析,但实用性如何还有待于进一步的研究与分析。