Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.07.2012, 22:15
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

process.nextTick
Как описывается в некоторой литературе,использование process.nextTick позволяет работать в "многопоточном". т.е между "разрывами" успевает обработать другие запросы из очереди
var http = require("http");
process.on('uncaughtException', function (err) {
  console.log('Caught exception: ' + err);
});
var time;
function sleep(milliSeconds,request, response) {
   
    if(new Date().getTime() <time + milliSeconds) 
     {
      // как описанно использование process.nextTick позволяет прослушивать серверу события 
      process.nextTick( function () {sleep(10000,request, response)});
     }
    else
     {
       sendRessult(request, response);
     }

  }
function sendRessult(request, response)
 {
    
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("Hello Worlddddd");
  response.end();
  console.log("stop");
}

var server=http.createServer().listen(8888);

// слушатель события
server.on('request',function(request, response) {
console.log("start");
  time=new Date().getTime();
  sleep(10000,request, response);
});

Запускаю почти одновременно два окна , но если бы всё было так как описывается последовательность бы была start-start-stop-stop , а не start-stop-start-stop
В чём ошибаюсь?
Ответить с цитированием
  #2 (permalink)  
Старый 23.07.2012, 14:38
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Проблема решена,в статьях по асинхронности/многопоточности с process.nextTick написан бред. Точнее не совсем бред, не описано одно условие при каком будет работать в режиме "многопоточности"-поэтому варианты описанные не рабочие, по тойже причине статьи встречаемые мной по async -бред
Ответить с цитированием
  #3 (permalink)  
Старый 23.07.2012, 14:44
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от dmitriymar
написан бред
ну дык напиши сюда что не бред, мы хоть знать будем. СПС
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #4 (permalink)  
Старый 23.07.2012, 14:59
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от devote
ну дык напиши сюда что не бред, мы хоть знать будем. СПС
вобщем там основной прикол в том ,что нексттик сначала запускает отложенную функцию в следующей интерации, а потом выполняет слушатели других портов,но не того, слушателем которого был запущен процесс(там насколько я понимаю очередь-пока энд не будет другой не запуститься).
А во всех статьях -слушатель на одном порту и доказательства того что это будет работать круче чем без него,примеры и статьи с async бред по тойже причине.
Решение на разные порты вешать и обращаться к ним работает,но не то что нужно.
Лучше маршрутизатор на одном порту и вспомогательные серверы(всё прописывается в одном сценарии,вспомогательные сервера -это слушатели других портов).
получается схема-маршрутизатор принял запрос,перекинул на незанятый вспомогательный сервер(на нём уже реализация с process.nextTick). Вспомогательный отработал-послал запрос с результатом на маршрутизатор-маршрутизатор отдал клиенту(process.nextTick-на маршрутизаторе нет смысла использовать)
Проверено -работает как нужно.

Последний раз редактировалось dmitriymar, 23.07.2012 в 15:07.
Ответить с цитированием
  #5 (permalink)  
Старый 24.07.2012, 20:42
Профессор
Отправить личное сообщение для Dmitriyff Посмотреть профиль Найти все сообщения от Dmitriyff
 
Регистрация: 22.07.2012
Сообщений: 164

Можете выложить пример кодом?
было бы интересно посмотреть.
Ответить с цитированием
  #6 (permalink)  
Старый 01.12.2012, 01:55
Профессор
Посмотреть профиль Найти все сообщения от Антон Крамолов
 
Регистрация: 11.04.2012
Сообщений: 255

nextTick в очередь добавляет, сначала выполянет основной цикл потом всякие ассинхронные функции и пр. нода однопоточна. в ней нет никакой многопоточности. так что твои выпады против меня это как раз банальное невежество. хотя за полгода, которые ты насилуешь ноду ты определенно её лучше должен знать, ведь я с ней знаком всего две недели
Ответить с цитированием
  #7 (permalink)  
Старый 01.12.2012, 22:41
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Антон Крамолов,
заткнулся бы умник. хуйню несёшь дятел -слово многопоточность в кавычках даун.
всё там проще - баг это
сервер если на одном компе висит откуда идёт вызов такая херня выходила
нашел тему времён 0.6 ноды

Последний раз редактировалось dmitriymar, 01.12.2012 в 23:10.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск