Re[5]: Java Parallel computing: multicore, Erlang, Scala
От: remark Россия http://www.1024cores.net/
Дата: 18.11.08 20:23
Оценка: 3 (1)
Здравствуйте, yumi, Вы писали:

Y>Эммм... либо Вы какой-то другой жавой пользуетесь или я чего-то упустил в своей жизни. Но насколько я знаю, потоки в жава разделяют память в контексте процесса. У каждого процесса, да своя память, а у потоков живущих в ней, она одна. Так вот, вся проблема в том, что когда несколько потоков начинают использовать одну и ту же область памяти, начинаются жуткие проблемы в виде дедлоков, гонок и прочих проблем. В эрланге как поступили, да очень просто, сделали так, чтобы у каждого потока была своя область памяти к которой имеет доступ только этот поток. Соответсвенно все проблемы связанные с дедлоками и гонками отпадают как класс.



Дедлок при обмене сообщениями — как 2 пальца. Один поток ждёт ответа от второго, второй — от первого. Естественно схемы дедлоков в реальных приложениях могут быть и сложнее — затрагивать больше потоков.

Гонки — тоже запросто. Одно сообщение подразумевает, что перед ним уже было обработано другое. И в 99.99% случаев так и происходит. А в 00.01% случаев получается по-другому.

Обмен сообщениями — бесспорно более высокоуровневая модель нежели "голая" разделяемая память — пиши что-куда хочешь, читай что-откуда хочешь. Но архитектурных проблема она автоматически не решает. Эти проблемы решаемы. Так же как и проблемы с разделяемой памятью.



1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.