Жизнь дается человеку один раз и прожить ее надо так, чтобы не ошибиться в рецептах.
Строить Асгардию побуждает тьма, посетившая людские души
В Jilia можно ж переприсваивать значения переменным. А это открывает сразу проблему что кто то параллельный может переменную эту поменять. В Clojure это например не так, и если шарится стейт то с помощью STM и специальных примитивов. Т.е. по умолчанию тред видит только то что что он сам делает, а другие треды если изначально взяли стейт из первого, то это будет копия не видимая первому. И никаких локов и мьютексов. А если требуется и правда шарнуть стейт то это требует спец. усилий и решения как оно будет шариться. Что на мой взгляд гораздо безопаснее чем как это сделано в других языках, когда "случайно" обнаруживают рейс кондишн в напервый взгляд безобидном коде. На интервью кстати ну может 1% кандидатов может умозрительно сказать на довольно простых примерах есть там рэйс кондишн или нет.
Стакан на треть пуст.
Ужас....у меня голова кружится от разговоров програмерров....
Ну - от этого как раз сравнительно просто защититься даже без "специальных примитивов". ( своя функция set пишется - и проверяет или кто-то другой её уже вызвал перед тем , как менять "значение переменной" ). Но в julia и так блоки begin end есть со своими собственными локальными переменными. Ну а кое-что там тупо кооперативной многозадачностью вместо локов решается. ( не отдавать по yield управление никому пока что-то с нужными данными делаешь - почти как EnterCriticalSection ).
Жизнь дается человеку один раз и прожить ее надо так, чтобы не ошибиться в рецептах.
Строить Асгардию побуждает тьма, посетившая людские души
Бедненькии....все это в голове туды-сюды туды-сюды каждый день болтается.....я еще чето на Иайка наорала..конешно, от такой жизни кинешься и проханова читать
Ты имеешь ввиду что программист контролирует точку переключения между потоками с помощью yield? Это да, решает часть проблем, но это тяжело нормально использовать. Например код, который "думает" что он переключается в строго определенном месте, где состояние скажем объекта в consistent стате, может по ходу дела вызывать какие то функции а те в свою очередь другие, и где то там вдруг оказывается другой yield. И вуаля отркывается доступ к non consistent стате. От дедлоков кооперативная тоже не спасает. Поинт в том что контроль состояния "вручную" это тяжело и ненадежно.
Стакан на треть пуст.
Жизнь дается человеку один раз и прожить ее надо так, чтобы не ошибиться в рецептах.
Строить Асгардию побуждает тьма, посетившая людские души
There are currently 3 users browsing this thread. (0 members and 3 guests)
Terms of Service | Privacy Policy |