init commit
This commit is contained in:
54
test/test_coroutine/test.lua
Normal file
54
test/test_coroutine/test.lua
Normal file
@@ -0,0 +1,54 @@
|
||||
|
||||
|
||||
printf = function(s,...)
|
||||
return io.write(s:format(...))
|
||||
end
|
||||
|
||||
function test(id)
|
||||
i = 0
|
||||
local j = 1
|
||||
while true do
|
||||
if j % 10000 == 5 and id % 10000 == 5 then
|
||||
printf("call test, coroutine id: %d, local index: %d, global index: %d\n", id, j, i)
|
||||
end
|
||||
j = j + 1
|
||||
i = i + 1
|
||||
coroutine.yield()
|
||||
end
|
||||
end
|
||||
|
||||
function foo(x)
|
||||
if x % 10000 == 5 then
|
||||
printf("cal foo: x = %d\n", x)
|
||||
end
|
||||
coroutine.yield()
|
||||
end
|
||||
|
||||
function foo1()
|
||||
print("call foo1")
|
||||
foo(10)
|
||||
return 3
|
||||
end
|
||||
|
||||
function main()
|
||||
n = 10000000
|
||||
co_list = {}
|
||||
for i = n, 1, -1 do
|
||||
co = coroutine.create(function (i)
|
||||
foo(i)
|
||||
end)
|
||||
table.insert(co_list, co);
|
||||
end
|
||||
while(true) do
|
||||
for i = 1, #co_list do
|
||||
coroutine.resume(co_list[i], i)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function lua_call_c()
|
||||
|
||||
printf("lua: call lua_call_c\n")
|
||||
myfoo()
|
||||
printf("lua: after my_foo\n")
|
||||
end
|
||||
Reference in New Issue
Block a user