ОБРАБОТКА ТРАНЗАКЦИЙ ДЛЯ ДЕЙСТВИЙ С ПОБОЧНЫМ ЭФФЕКТОМ В ТРАНЗАКЦИОННОЙ ПАМЯТИ

1. Машиночитаемый носитель, хранящий машинно-исполняемые инструкции для управления вычислительной системой, включающей в себя операцию по обработке параллельной программы, включающей в себя множество потоков, в которой, по меньшей мере, один из множества потоков включает в себя атомарную транзакцию 202, имеющую действие 206 с побочным эффектом, машинно-исполняемые инструкции, содержащие:
транзакционную память 212, выполненную с возможностью управлять доступом множества потоков к совместно-используемой памяти 104;
первый диспетчер 210 ресурса, выполненный с возможностью быть внесенным в атомарную транзакцию 202 и управлять ресурсом, относящимся к действию 206 с побочным эффектом;
второй диспетчер 208 ресурса, выполненный с возможностью быть внесенным в атомарную транзакцию и управлять транзакционной памятью 212; и
диспетчер 216 транзакции, связанный с первым и вторым диспетчерами 208, 210 ресурсов, в котором диспетчер 216 транзакции выполнен с возможностью принимать голос от первого и второго диспетчеров 208, 210 ресурсов относительно фиксации транзакции, и в котором действие 206 с побочным эффектом является, по меньшей мере, одним из отсроченных до тех пор, пока транзакция не зафиксирована и применена совместно с компенсирующим действием для действия с побочным эффектом.
2. Машиночитаемый носитель по п.1, в котором первый и второй диспетчеры ресурсов являются диспетчерами энергозависимых ресурсов.
3. Машиночитаемый носитель по п.2, в котором диспетчер транзакции является диспетчером облегченной транзакции.
4. Машиночитаемый носитель по п.1, в котором первый и второй диспетчеры ресурсов включены в состав библиотеки, имеющей множество выборочно доступных диспетчеров ресурсов, для того, чтобы быть внесенными в атомарные транзакции, имеющие действия с побочными эффектами.
5. Машиночитаемый носитель по п.4, в котором, по меньшей мере, один из диспетчеров ресурсов во множестве диспетчеров ресурсов заранее программируется в управляемой среде.
6. Машиночитаемый носитель по п.1, в котором диспетчер транзакции выполнен с возможностью принимать протокол фиксации для определения фиксировать ли транзакцию.
7. Машиночитаемый носитель по п.1, в котором протокол фиксации является двухфазовым протоколом фиксации, включающим в себя фазу подготовки и фазу фиксации.
8. Машиночитаемый носитель по п.1, в котором действие с побочным эффектом выбирается из группы, включающей в себя действия ввода или вывода, системные вызовы, действия с унаследованным кодом, действия ядра, управление устройствами, действия с другими доменами за пределами управляемой среды.
9. Машиночитаемый носитель по п.8, в котором действие с побочным эффектом является действием по печати.
10. Способ управления атомарной транзакцией, имеющей действие с побочным эффектом, способ содержащий этапы, на которых:
вносят 304, по меньшей мере, один диспетчер 210, не являющийся диспетчером памяти;
вносят 304 диспетчер 208 ресурса памяти, выполненный с возможностью управлять транзакционной памятью 212;
вызывают протокол 308 фиксации, выполненный с возможностью определять, отдали ли диспетчеры, являющийся и не являющийся диспетчерами ресурсов памяти, голоса за фиксацию транзакции;
фиксируют 314 транзакцию, если диспетчеры, являющиеся и не являющиеся диспетчерами ресурсов памяти, голосуют за фиксацию транзакции и применяют действие с побочным эффектом, после того как транзакция фиксируется;
повторно выполняют 312 транзакцию, если диспетчер 208 ресурса памяти не голосует за фиксацию транзакции, но диспетчеры 210, не являющиеся диспетчерами ресурсов памяти, голосуют за фиксацию транзакции, при этом действие 206 с побочным эффектом является, по меньшей мере, одним из непримененных, если транзакция повторно выполняется и применяется совместно с компенсирующим действием при повторном выполнении транзакции;
прерывают 318 транзакцию, если, по меньшей мере, один из диспетчеров 210, не являющихся диспетчером ресурса памяти, не голосует за фиксацию транзакции, при этом действие 206 с побочным эффектом не применяется, если транзакция прерывается.
11. Способ по п.10, в котором атомарная транзакция включает в себя первоначальное состояние, и при этом повторное выполнение транзакции включает в себя откат к первоначальному состоянию.
12. Способ по п.11, в котором повторное исполнение транзакции включает в себя повторное исполнение транзакции, пока диспетчеры, являющиеся и не являющиеся диспетчерами ресурсов памяти, не проголосуют за фиксацию транзакции, или транзакция прерывается.
13. Способ по п.11, в котором делаются изменения к первоначальному состоянию, устанавливающиеся на основании фиксации транзакции.
14. Способ по п.10, в котором повторное выполнение транзакции включает в себя применение бессрочного компенсирующего действия для действия с побочным эффектом.
15. Способ по п.10, в котором фиксация транзакции включает в себя применение отложенного действия.
16. Способ по п.10, в котором определение, голосуют ли первый и второй диспетчеры ресурсов за фиксацию транзакции, включает в себя вызов способа для каждого внесенного диспетчера ресурса для получения соответствующего голоса для транзакции.
17. Способ по п.10, в котором диспетчер ресурса памяти голосует за фиксацию, если не существует конфликтов при обращении к памяти.
18. Управляемая среда, работающая на вычислительном устройстве и выполненная с возможностью управлять приложением, имеющим атомарную транзакцию 202, включающую в себя действие 206 с побочным эффектом, управляемая среда, включающая в себя:
транзакционную память 212;
библиотеку диспетчеров ресурсов, в которой, по меньшей мере, два диспетчера 208, 210 ресурсов выполнены с возможностью быть внесенными приложением и загруженными в энергозависимую память 104 на вычислительное устройство, в которой один из диспетчеров ресурсов является диспетчером 210 ресурса с побочным эффектом, выполненным с возможностью вносить в управление ресурс 214, относящийся к действию с побочным эффектом, а другой из диспетчеров ресурсов является диспетчером 208 ресурса памяти, выполненным с возможностью быть внесенным в управление транзакционной памятью 212; и
диспетчер 216 транзакции, загруженный в энергозависимую память 104 и связанный с внесенными диспетчерами 208, 210 ресурсов, при этом диспетчер транзакции выполнен с возможностью принимать голос от внесенных диспетчеров ресурсов относительно фиксации транзакции, в котором диспетчер 208 ресурса памяти голосует в зависимости от того произошел ли 312 конфликт при обращении к памяти во время транзакции.
19. Управляемая среда по п.18, в которой вычислительное устройство включает в себя множество процессоров, и в котором атомарная транзакция включена в поток приложения, имеющего множество параллельных потоков.
20. Управляемая среда по п.19, в которой транзакционная память управляет доступом к совместно-используемым данным на вычислительном устройстве.