Pull to refresh
17
0
Трубаров Андрей @Futbolist

User

Send message

Многопоточность в Ruby

Reading time9 min
Views37K
Перевод главы «Multithreading» книги David Thomas и Andrew Hunt «Programming Ruby: The Pragmatic Programmers' Guide, Second Edition».

Часто самым простым способом выполнить одновременно две вещи является использование потоков в Ruby. Они являются внутрипроцессными, встроенными в интерпретатор Ruby. Это делает потоки Ruby полностью переносимыми, т.е. независимыми от операционной системы. Но в то же время вы точно не получите выгоду от использования родных, нативных потоков. Что это значит?

Вы можете столкнуться с голоданием (thread starvation — это когда поток с маленьким приоритетом не имеет шанса запуститься). Если вы хотите заблокировать ваши потоки, то со скрежетом остановится целый процесс. А если возникнет ситуация, что некоторые потоки будут посылать вызовы операционной системе, для выполнения которых требуется немалое время, то все потоки будут висеть, пока интерпретатор не получит контроль обратно. И наконец, если ваша машина имеет больше одного процессора, потоки Ruby не будут это использовать, т.к. они запускаются в одном процессе, а в одиночном родном потоке они будут вынуждены запускаться на одном процессоре единовременно.

Все это звучит страшновато. Тем не менее, на практике во многих случаях выгода от использования потоков во многом перевешивает любые потенциальные проблемы, которые могут возникнуть. Потоки Ruby являются эффективным и легким путем достижения параллельности в вашем коде. Вы просто должны понять основные проблемы реализации, и, соответственно, архитектуру.
Читать дальше →
Total votes 41: ↑37 and ↓4+33
Comments30

Электрическое мышление

Reading time7 min
Views847
Данный топик — перевод статьи Yvonne Raley из журнала Scientific American Mind.

РоботСколько времени займет у вас сложение чисел 3 456 732 и 2 245 678? Десять секунд? Неплохо для человека. Средний современный компьютер может выполнить эту операцию за 0.000000018 секунд. А что на счет вашей памяти? Вы можете запомнить список планируемых покупок из 10 наименований? А из 20? Сравните это со многими миллионами для компьютера.

С другой стороны, компьютеры не так быстро распознают лица, которые люди различают мгновенно. Машины испытывают недостаток в творческом потенциале свежих идей, они не имеют чувств и теплых воспоминаний о своей молодости.
Читать дальше →
Total votes 10: ↑6 and ↓4+2
Comments13

Information

Rating
Does not participate
Location
Донецк, Донецкая обл., Украина
Date of birth
Registered
Activity