Разбираться в каком месте косяк у Вас мне тоже лень. Поэтому славянофильские определения с переводом:
Без ожиданий (wait-free)
Самая строгая гарантия прогресса. Алгоритм работает без ожиданий, если каждая операция выполняется за детерминированное количество шагов, независящее от других потоков.
— Wait-freedom is the strongest non-blocking guarantee of progress, combining guaranteed system-wide throughput with starvation-freedom. An algorithm is wait-free if every operation has a bound on the number of steps the algorithm will take before the operation completes.
Без блокировок (lock-free)
Для алгоритмов без блокировок гарантируется системный прогресс по крайней мере одного потока. Например поток, выполняющий операцию сравнение с обменом в цикле теоретически может выполняться бесконечно, но каждая его итерация означает, что какой-то другой поток совершил прогресс, т.е. система в целом совершает прогресс.
— Lock-freedom allows individual threads to starve but guarantees system-wide throughput. An algorithm is lock-free if it satisfies that when the program threads are run sufficiently long at least one of the threads makes progress (for some sensible definition of progress). All wait-free algorithms are lock-free.
Без препятствий (obstruction-free)
Самая слабая из гарантий. Поток совершает прогресс, если не встречает препятствий со стороны других потоков. Алгоритм работает без препятствий, если поток, запущенный в любой момент (при условии, что выполнение всех препятствующих потоков приостановлено) завершит свою работу за детерминированное количество шагов.
— Obstruction-freedom is possibly the weakest natural non-blocking progress guarantee. An algorithm is obstruction-free if at any point, a single thread executed in isolation (i.e., with all obstructing threads suspended) for a bounded number of steps will complete its operation. All lock-free algorithms are obstruction-free.
Поэтому автор описывает именно алгоритмы без блокировок (не путать с неблокирующими алгоритмами). Алгоритмы исполняются без ожиданий на отдельных процессорах и обращаются к отдельной памяти. Ну а алгоритм без препятствий обеспечивают стандартные примитивы для реализации многопоточности.
В с++0х пофиксили нереентерабельность:
«If control enters the declaration concurrently while the variable is being initialized, the concurrent execution shall wait for completion of the initialization.»
но осталось неопределённое поведение для рекурсивной инициализации:
«If control re-enters the declaration recursively while the variable is being initialized, the behavior is undefined.»
Т.е. единственный сценарий — заменитель папки с историей болезни. Тогда не понятно при чём тут стерильность, айпад не более не стерилен, чем сотовый телефон или посетители в палатах. При таком сценарии, да, айпад более чем удобен и в нынешнем состоянии. Но, возвращаясь к хрупкости, имеем дилемму: бумага и карандаш, которые всегда в работоспособном состоянии или айпад, который можно уронить или повредить, а также, который может просто сломаться. Вывод: носить с собой айпад и историю болезни с карандашом. Отсюда и выходит, что айпад это лишняя вещь, которую придётся дублировать старинными средствами.
Вопросом на вопрос? Лично не работал. У меня половина родственников медики: от главврача клиники до практикующих хирургов и не один не плакался на осутствие айпадов. Но вопрос не в этом — опишите сценарии использования айпада врачом в клинике? Ну за исключением очевидного сценария автоматизации документооборота.
А в чём плюсы применения айпада в медицине. Написали очень много минусов, ещё больше советов как через танцы с бубном в присядку эти минусы нивелировать, а в чём плюсы? Документооборот? Так проще посадить медсетру/мед.клерка, который забъёт записи врача в БД. Тем более что бумажный архив никто не отменял, а что сдавать в архив каракули врача или распечатку из БД всё равно. Я не вижу что может сделать айпад, что не в состоянии сделать стационарный компьютер. Ещё одну вещь, которую нужно по всей больнице таскать с собой?
Я обычно отвечаю на три вопроса, прежде чем выбрать единственно правильный путь:
1. Является ли функционал библиотеки центральной частью разрабатываемой сиситемы? Если — да, то необходимо систему строить вокруг библиотеки, т.е. принять соглашение о кодировании, стиле и технологиях, которые используются в библиотеке и т.д. Если — нет, то предпочитаю написать своё, пусть и менее универсальное.
2. Является ли функционал библиотеки общим, т.е стандартные алгоритмы, структуры данных и пр.? Если — да, то использовать библиотеку.
3. Оцениваю баланс между порогом вхождения для использования библиотеки и реальную потребность в функционале библиотеки, т.е. если мне нужен из библиотеки ничтожный функционал, но при этом необходимо изучить всю инфраструктуру, то предпочитаю своё решение.
А вообще, опенсорс библиотеки удобно использовать как базу для написания своего решения. Всё же я сторонник разумного велосипедостроения.
Честно говоря, не понял цель акции. Ведь в первую очередь такие говнопейсатели, как поддерживающие данное письмо должны озаботиться выпуском своих «шедевров» в электронном виде, потому что книжные полки их макулатурой никто забивать не будет (не Гоголи). Или булгаковский массолит будоражит сознание?
Остап Сулейманович перелогинтесь. Можно озвучить как медицина или энергетика будет трансформироваться в ИТ? и что такое ИТ в Вашем понимании? Что за закон ускоряющейся отдачи? «Мощность солнечной энергетики» — это мощно, солнечная энергетика не оправдывет средств на производство и утилизацию батарей, и самое главное отжирает громадные площади у с/х-ва. Про прогресс в этой области не надо. Так что рано Вы о Нью-Васюках возмечтали, для начала финансовый кризис победите, а то вместо айфона с палкой по деревьям прыгать придётся.
Это первый шаг, потом когда все продавцы сделают продажи и через айтюнес, вдруг выйдет эппловский запрет на эксплуатацию продуктов купленных у стороннего продавца на ус-вах эппл. И волки сыты и овцы целы.
Вот-вот. Тоже самое можно сказать про рашионал роуз. Как был он в зачаточном состоянии так и остался. Особенно поражает демонстрация повторного использования кода и мультиязычной разаработки, когда для вставки стандартной паттерны проектирования запускается джава приложение.
«Так что за недокументированные возможности мелкософт (да и остальные) отвечают не больше чем за документированные.» ->
«Так что за документированные возможности мелкософт (да и остальные) отвечают не больше чем за недокументированные.»
Как-будто бы существует в природе софт за который отвечает производящая компания. Разделение на документированное и недокументированное — условно. Недокументированное может измениться или исчезнуть, а документированное — нет. Вот и вся разница. Так что за недокументированные возможности мелкософт (да и остальные) отвечают не больше чем за документированные. Еулу почитайте. Многим ответил мелкософт за прекращение торгов на лондонской бирже? А всё произошло по вине системы, написанной мелкософтом, с использованием технологий от мелкософта. Обыкновенная жадность, которую пытаются прикрыть технической прозорливостью.
В своё время мелкомягкие наехали на виндоус коммандер, который сейчас тотал коммандер именно из-за слова виндоус. Понятно, что файл-менеджер ну никак не операционная система. А вообще пусть грызутся, чем меньше они друг-другу позволят запатентовать, тем воздух чище.
Без ожиданий (wait-free)
Самая строгая гарантия прогресса. Алгоритм работает без ожиданий, если каждая операция выполняется за детерминированное количество шагов, независящее от других потоков.
— Wait-freedom is the strongest non-blocking guarantee of progress, combining guaranteed system-wide throughput with starvation-freedom. An algorithm is wait-free if every operation has a bound on the number of steps the algorithm will take before the operation completes.
Без блокировок (lock-free)
Для алгоритмов без блокировок гарантируется системный прогресс по крайней мере одного потока. Например поток, выполняющий операцию сравнение с обменом в цикле теоретически может выполняться бесконечно, но каждая его итерация означает, что какой-то другой поток совершил прогресс, т.е. система в целом совершает прогресс.
— Lock-freedom allows individual threads to starve but guarantees system-wide throughput. An algorithm is lock-free if it satisfies that when the program threads are run sufficiently long at least one of the threads makes progress (for some sensible definition of progress). All wait-free algorithms are lock-free.
Без препятствий (obstruction-free)
Самая слабая из гарантий. Поток совершает прогресс, если не встречает препятствий со стороны других потоков. Алгоритм работает без препятствий, если поток, запущенный в любой момент (при условии, что выполнение всех препятствующих потоков приостановлено) завершит свою работу за детерминированное количество шагов.
— Obstruction-freedom is possibly the weakest natural non-blocking progress guarantee. An algorithm is obstruction-free if at any point, a single thread executed in isolation (i.e., with all obstructing threads suspended) for a bounded number of steps will complete its operation. All lock-free algorithms are obstruction-free.
Поэтому автор описывает именно алгоритмы без блокировок (не путать с неблокирующими алгоритмами). Алгоритмы исполняются без ожиданий на отдельных процессорах и обращаются к отдельной памяти. Ну а алгоритм без препятствий обеспечивают стандартные примитивы для реализации многопоточности.
«If control enters the declaration concurrently while the variable is being initialized, the concurrent execution shall wait for completion of the initialization.»
но осталось неопределённое поведение для рекурсивной инициализации:
«If control re-enters the declaration recursively while the variable is being initialized, the behavior is undefined.»
Но всеми силами к этому стремятся. -)
1. Является ли функционал библиотеки центральной частью разрабатываемой сиситемы? Если — да, то необходимо систему строить вокруг библиотеки, т.е. принять соглашение о кодировании, стиле и технологиях, которые используются в библиотеке и т.д. Если — нет, то предпочитаю написать своё, пусть и менее универсальное.
2. Является ли функционал библиотеки общим, т.е стандартные алгоритмы, структуры данных и пр.? Если — да, то использовать библиотеку.
3. Оцениваю баланс между порогом вхождения для использования библиотеки и реальную потребность в функционале библиотеки, т.е. если мне нужен из библиотеки ничтожный функционал, но при этом необходимо изучить всю инфраструктуру, то предпочитаю своё решение.
А вообще, опенсорс библиотеки удобно использовать как базу для написания своего решения. Всё же я сторонник разумного велосипедостроения.
«Так что за документированные возможности мелкософт (да и остальные) отвечают не больше чем за недокументированные.»
"… а позже стило..." -> "… а позже стилоМ..."
"… Хаананский..." -> "… Ханаанский..."