Не в событийном механизме дело, а в способе доступа к данным.
Бытовая аналогия. Вот представьте себе две полки, разделенные дверцами на три ячейки. Нужно переместить что-либо в 1й ячейке с верхней полки на нижнюю.
Алгоритм 1 (простой перенос):
- открываем 1ю дверцу,
- берем с верхней полки "что-либо",
- кладем "что-либо" на нижнюю полку,
- закрываем дверцу.
Теперь другая задача: переместить с верхней полки 1й ячейки на нижнюю полку 3й ячейки.
Алгоритм 2 (FIFO):
- открываем 1ю дверцу,
- берем с верхней полки "что-либо",
- бип-бип-бип .... Unrecognized error ... - мы не можем открыть 3ю дверцу, у нас рука занята "чем-либо"! нужна еще одна промежуточная свободная ячейка или дополнительная поверхность (стол) с последовательным доступом к ней (FIFO).
- кладем "что-либо" на стол,
- закрываем 1ю дверцу,
- открываем 3ю дверцу,
- берем со стола "что-либо",
- кладем "что-либо" на нижнюю полку 3й ячейки,
- закрываем 3ю дверцу.
А теперь представьте, что руки две и вы можете работать ими одновременно, но левая имеет доступ только к 1й и 2й ячейке, а правая только ко 2й и 3й. Задача такая же как в прошлый раз: переместить "что-либо" с верхней полки 1й ячейки на нижнюю полку 3й ячейки.