Если бы я был архитектором QUIK

Страницы: Пред. 1 2
RSS
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
Вопрос к поддержке:
   В QUIKе много различных коллбеков. Где гарантии, что они не пропускают события, по которым должны выполняться?
Пропуск событий в заявленных коллбеках, даже если это происходит нечасто, это ошибка QUIK.
   В существующей версии QUIK коллбеки выполняются в единственном служебном потоке.  Что происходит в QUIKе если возникает очередное новое событие, по которому должен выполниться коллбек и при этом не был обработан предыдущий? Есть служебные очереди необработанных событий?
   В существующей версии QUIK выполнение коллбека блокируется до тех пор пока в потоке main не выполнится sleep или сишная функция.
   Выше написанное означает полную зависимость служебного потока от пользовательского. Зачем это сделано в QUIKe?
   В этой ветке были изложены предложения, которые, по моему мнению, могли бы устранить описанные выше проблемы. Что в этих предложениях не понятно или вызывает сомнения?
 
Цитата
TGB написал:
В существующей версии QUIK выполнение коллбека блокируется до тех пор пока в потоке main не выполнится sleep или сишная функция.     Выше написанное означает полную зависимость служебного потока от пользовательского. Зачем это сделано в QUIKe?
Блокируется на время выполнения байт-кода. Не представляю, какой код нужно написать без вызова сишных функций, выполняющийся длительное время, чтобы это можно было заметить.
 
Функция  sleep  уступает свободное время потока следующему потоку.
Например sleep(1000) в main означает, что поток main будет остановлен системой на 1000 ms.
-----------------------
Таким образом,
функция sleep выполняется  быстро, так как ее задача сообщить ОС
чтобы та разбудила поток через заданное время.
ОC устанавливает таймер на событие "запустить поток main через 1000 ms.
------------------------
Все эти действия выполняются буквально мкс .
Поэтому ничего не блокируется для исполнения sleep.
 
чтобы остановить выполнение потоко с колбеком надо в функцию колбека поставить sleep.
Поток колбека будет остановлен на время указанное в sleep.
 
и еще...
Если значение аргумента sleep равно нулю, поток освобождает оставшуюся часть своего интервала времени для любого потока с таким же приоритетом, готовым к выполнению.
Если других готовых к выполнению потоков с таким же приоритетом нет, выполнение текущего потока не приостанавливается.
 
Цитата
nikolz написал:
Поэтому ничего не блокируется для исполнения sleep.
    Когда же вы научитесь читать :smile: ? Вы читаете тексты перед тем как писать?
  Ведь написано:
Цитата
TGB написал:
блокируется до тех пор пока в потоке main не выполнится sleep или сишная функция
 Где вы видите у меня фразу: "для исполнения"?  
 У вас какое то недержание ваших текстов.
Страницы: Пред. 1 2
Читают тему
Наверх