2012-05-09 3 views
5

Я хотел использовать Lua Lanes, чтобы выполнить многопоточность и записать время. Вот код:Lua Lanes: попытка индексирования глобального «os» (значение nil)

require "lanes" 

function performTest() 
    os.execute("testJson-mt.lua") 
end 

for i=1,10,1 do 
    f= lanes.gen(performTest) 
    a=f() 
    startTime = os.time() 
    print("ID "..a[1].." completed.") 
    endTime = os.time() 
    diff = os.difftime (endTime, startTime) 
    print(i..","..os.date("%x %X",startTime)..","..os.date("%x %X",endTime)..","..startTime..","..endTime..","..diff) 
end 

Однако, когда я запускаю код, консоль возвращает ошибку: lua: testLanes.lua:4: attempt to index global 'os' (a nil value).

Этот код ошибки указывает на эту строку, где os.execute("testJson-mt.lua"). Я не совсем понимаю эту ошибку. Пожалуйста, порекомендуйте.

Примечание: Я использую Lua for Windows как IDE.

ответ

7

По умолчанию lanes.gen loads no libraries, даже базовые библиотеки. Поэтому передайте '*' в качестве первого параметра в lanes.gen, чтобы получить os и другие модули в полосе.

+0

Я пробовал. Оно работает. Благодаря! – ktlim

+2

Замечание ответа, которое помогло вам решить, было бы замечательно;) –

+0

«*» загружает все библиотеки, которые перегружены, вы можете просто использовать «os» в качестве первого параметра для lanes.gen – Stomp

1

Вы также можете просто сделать require "os".

+1

Обратите внимание, что этот вызов требовать должен быть внутри функции 'performTest()', так что он выполняется на каждой полосе, а не в базовом состоянии. – RBerteig

Смежные вопросы