Знаю что много об этом сказано! Знаю что специально сделали потокобезопасные операции с приставкой s или с не важно..
Если сам не специалист в этой области приходится обращаться...
На конкретных примерах ОБЩЕГО вида.
--------------------------------------------
1. это небезопасно!
A={}
function OnAllTrade(alltrade)
table.insert(A, alltrade)
end
function main()
Table={}
Table=A[1]
end
--------------------------------------------
2. А это безопасно? если нет то почему?
A,B={},{}
function OnAllTrade(alltrade)
table.insert(A, alltrade)
B=A
end
function main()
Table={}
Table=B[1]
end
------------------------------------------
3. аналогично?
A=0
function OnAllTrade(alltrade)
table.insert(A, alltrade)
A=A+alltrade.price-const_1+const_2+...
end
function main()
C=A/100
if C>const_N then ... end
end
------------------------------------------
4. ....?
A=0
function OnAllTrade(alltrade)
table.insert(A, alltrade)
A=A+alltrade.price-const_1+const_2+...
B=A
end
function main()
C=B/100
if C>const_N then ... end
end
----------------------------------------
5. функция getQuoteLevel2(class,sec) и т.п. вставленная внутрь main безопасна, не изменится ли таблица в процессе присваивания(чтения)?
если нет то почему? что такое хэш и в чём отличие от массива?
------------------------------------
6. Прошу, если это возможно, провести маленькую лекцию или дать ссылку где почитать
о работе терминала в плане обработки поступающей информации и взаимодействии скрипта lua с той информацией что поступила в quik. Ясно что вот колбэк он вызывается при изменениях.. НО более подробно в доступной форме, что находится в "чёрном ящике"? Что там за информационные очереди, как они меняются, почему двигаемся по этой очереди, как к этой очереди подвязываются колбэки и main...Вот такого плана... Пожалуйста! Очень прошу, потому как ни чего не понятно...