2012-05-09 20 views
5

Tôi muốn sử dụng Lua Lanes để thực hiện đa luồng và ghi lại thời gian đã thực hiện. Đây là mã:Lua Lanes: cố gắng lập chỉ mục toàn cầu 'os' (giá trị 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 

Tuy nhiên, khi tôi chạy mã, bảng điều khiển sẽ trả về lỗi: lua: testLanes.lua:4: attempt to index global 'os' (a nil value).

Mã lỗi này trỏ tới dòng này, nơi os.execute("testJson-mt.lua"). Tôi không hoàn toàn hiểu được lỗi này. Xin cho biết.

Lưu ý: Tôi đang sử dụng Lua for Windows làm IDE.

Trả lời

7

Theo mặc định, lanes.gen loads no libraries, thậm chí không phải thư viện cơ sở. Do đó, hãy chuyển '*' làm thông số đầu tiên thành lanes.gen để nhận được os và các mô-đun khác trong làn đường.

+0

Tôi đã thử nó. Nó hoạt động. Cảm ơn! – ktlim

+2

Đánh dấu câu trả lời giúp bạn được giải quyết sẽ tuyệt vời;) –

+0

"*" tải tất cả các thư viện quá mức cần thiết, bạn chỉ có thể sử dụng "os" làm thông số đầu tiên cho lanes.gen – Stomp

1

Bạn cũng có thể chỉ cần require "os".

+1

Lưu ý rằng lệnh gọi này yêu cầu phải nằm bên trong hàm 'performTest()' để nó được thực hiện trong mỗi làn thay vì ở trạng thái cơ bản. – RBerteig

Các vấn đề liên quan