Language support for lightweight transactions

Language support for lightweight transactions
复制标题

DOI:
10.1145/949305.949340
复制
发表时间:
2003
期刊:
--
影响因子:
--
通讯作者:
T. Harris;K. Fraser
T. Harris;K. Fraser
中科院分区:
其他
文献类型:
--
作者:
T. Harris;K. Fraser

文献摘要

被引文献

相似文献

并发编程是出了名的困难。当前的抽象是复杂的,这使得设计可靠和可扩展的计算机系统变得困难。我们认为,这些问题可以通过转向声明式并发控制来解决,在这种方式下,程序员可以直接指出他们需要的安全属性。在我们的方案中,程序员指定了在基于轻量级软件的事务中执行的代码段,这些事务自动且精确地提交一次。这些事务可以更新共享数据、实例化对象、调用库特性等等。它们也可以阻塞,等待任意布尔条件变为真。不访问相同共享内存位置的事务可以并发提交。此外,一般来说,事务外部的内存访问不会产生性能损失。我们提出了该提案的详细设计以及实施和评估。我们认为,由此产生的系统(i)对主流程序员来说更容易使用,(ii)防止基于锁的优先级反转和死锁问题,(iii)可以提供性能优势。
Concurrent programming is notoriously difficult. Current abstractions are intricate and make it hard to design computer systems that are reliable and scalable. We argue that these problems can be addressed by moving to a declarative style of concurrency control in which programmers directly indicate the safety properties that they require. In our scheme the programmer demarks sections of code which execute within lightweight software-based transactions that commit atomically and exactly once. These transactions can update shared data, instantiate objects, invoke library features and so on. They can also block, waiting for arbitrary boolean conditions to become true. Transactions which do not access the same shared memory locations can commit concurrently. Furthermore, in general, no performance penalty is incurred for memory accesses outside transactions.We present a detailed design of this proposal along with an implementation and evaluation. We argue that the resulting system (i) is easier for mainstream programmers to use, (ii) prevents lock-based priority-inversion and deadlock problems and (iii) can offer performance advantages.