Показать сообщение отдельно
Старый 13.11.2013, 00:42   #31
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Clear Engine (Понятный движок)

Сообщение от jimon Посмотреть сообщение
представь какая каша в коде получается если у тебя async file io в несколько потоков и коллбек после загрузки, ты просто погрузнешь в мьютексах чтобы правильно потом отработать загруженные файлы

а с проверяющей "хренью" у тебя получается чистый lock-free код, ты обрабатываешь результаты асинхронных операций по мере возможности, и никаких тебе мьютексов

в таком lock-free коде если ты встречаешь место где тебе нужно просто подождать - используешь await подобный паттерн, как в c# http://msdn.microsoft.com/en-us/libr.../hh156528.aspx
libuv в такой ситуации отличное решение. У тебя есть главный поток логики, позади есть процессы но в контролируемых условиях, и обрабатываются независимо, когда готовы - сообщат тебе.
Посмотри как асинхронность устроена в node.js на основе libuv. По сути это одна очередь функций, и задние потоки о которых пользователю платформой не нужно заботиться.
Скейлиться во всех отношениях, никаких lock'ов и простоев в ожиданиях - когда будет готово, нам сообщят.
(Offline)
 
Ответить с цитированием