Вопрос о целостности данных при работе с таблицей из разных вычислительных потоков
Пользователь
Сообщений: Регистрация: 02.01.2026
06.01.2026 09:14:37
Похоже, операция множественного присвоения выполняется атомарно. Вот такой код работает без ошибок:
Скрытый текст
Код
local run = true
local a1, a2, a3, a4, a5, a6, a7, a8, a9 = 0, 0, 0, 0, 0, 0, 0, 0, 0
local n = 100
function OnAllTrade()
for i = 1, n do
a1, a2, a3, a4, a5, a6, a7, a8, a9 = i, i, i, i, i, i, i, i, i
end
end
function OnParam()
for i = 1, n do
a1, a2, a3, a4, a5, a6, a7, a8, a9 = i, i, i, i, i, i, i, i, i
end
end
function main()
while run do
sleep(1)
local t = prec_time()
for i = 1, n do
if a1 ~= a2 or a1 ~= a3 or a1 ~= a4 or a1 ~= a5 or a1 ~= a6 or a1 ~= a7 or a1 ~= a8 or a1 ~= a9 or a1 == nil then
error("error")
end
end
end
end
function OnStop()
run = nil
end
Cкорость обмена данными через файлы
Пользователь
Сообщений: Регистрация: 02.01.2026
06.01.2026 09:12:04
Цитата
nikolz написал: Но если это разные потоки или приложения, то надо синхронизировать
Как в QLua синхронизировать запись из разных скриптов в один файл?
Вопрос о целостности данных при работе с таблицей из разных вычислительных потоков
Пользователь
Сообщений: Регистрация: 02.01.2026
05.01.2026 09:52:58
Цитата
nikolz написал: При множественном присваивании Lua сначала вычисляет все значения, а затем выполняет присваивание.
А если все значения уже вычислены, как в примерах выше?
Вопрос о целостности данных при работе с таблицей из разных вычислительных потоков
Пользователь
Сообщений: Регистрация: 02.01.2026
04.01.2026 21:53:08
Является ли атомарной операция присвоения одновременно нескольким переменным?
Код
a, b = 1, 2
или
Код
x, y = y, x
Нули в индикаторе там, где должны быть пустые интервалы
Пользователь
Сообщений: Регистрация: 02.01.2026
03.01.2026 13:55:31
Вот код тестового индикатора:
Код
Settings = {
Name = "Test",
line = {{ Name = "Test" }}
}
function Init()
return 1
end
function OnCalculate(index)
if true == CandleExist(index) then
return C(index)
end
--return nil
end
Если его добавить на диаграмму с несколькими графиками и сделать экспорт в текстовый файл, то на тех свечах, где индикатор не рассчитывался будут нули.
Нули в индикаторе там, где должны быть пустые интервалы
Пользователь
Сообщений: Регистрация: 02.01.2026
02.01.2026 23:50:08
Пишу индикатор. При отсутсвии свечки OnCalculate не рассчитывает значение (когда на одну диаграмму добавляется несколько графиков). Но если сохранить индикатор в текстовый файл (ПКМ - Сохранить данные в файл), то на месте нерассчитанных значений будут нули. На примере Moving Average: