синхронизация на стороне сервера js (node.js) - PullRequest
5 голосов
/ 03 февраля 2012

Я хочу реализовать некоторый код на стороне сервера, используя node.js.

Есть ли в файле node.js (js) какая-либо встроенная синхронизация. Как у нас есть

synchronized ключевое слово вjava?

Могу ли я сделать какой-то блок кода синхронизированным? Так, чтобы за один раз его мог выполнить только поток?

Ответы [ 3 ]

12 голосов
/ 03 февраля 2012

В узле каждый кодовый блок синхронизируется.Node использует совместную многозадачность;единственный раз, когда другой фрагмент кода может быть запущен, это когда возвращается первый фрагмент кода.

Это движущая сила его дизайна, управляемого событиями: вы просите сделать что-то медленное для вас (например, чтение изфайл), а затем вы указываете еще одну функцию, которая будет запускаться после выполнения этой медленной операции.Первая функция возвращается, и Node может запускать другие функции, ожидая завершения операции ввода-вывода.Когда ввод-вывод будет готов, и все остальные функции будут выполнены, будет вызвано ваше продолжение.

Синхронизация не требуется, когда вы полностью контролируете, когда ваш код выдастся.По сути, каждая функция синхронизируется.

1 голос
/ 11 мая 2012

Да. Вы можете сделать это с помощью волокон, подробнее здесь http://alexeypetrushin.github.com/synchronize

1 голос
/ 03 февраля 2012

Узел не использует потоки.Он основан на машине событий ...

Так что я думаю, что ваш вопрос немного устарел. Может быть, если у вас возникнет проблема, которую вы пытаетесь решить, люди могут вам помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...