diff options
Diffstat (limited to '3rdparty/luv/tests/test-work.lua')
-rw-r--r-- | 3rdparty/luv/tests/test-work.lua | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/3rdparty/luv/tests/test-work.lua b/3rdparty/luv/tests/test-work.lua new file mode 100644 index 00000000000..3a98b15e6bc --- /dev/null +++ b/3rdparty/luv/tests/test-work.lua @@ -0,0 +1,48 @@ +return require('lib/tap')(function (test) + test("test threadpool", function(print,p,expect,_uv) + p('Please be patient, the test cost a lots of time') + local count = 1000 --for memleaks dected + local step = 0 + local ctx + ctx = _uv.new_work( + function(n,s) --work,in threadpool + local uv = require('luv') + local t = uv.thread_self() + uv.sleep(100) + return n,n*n, tostring(uv.thread_self()),s + end, + function(n,r,id, s) + assert(n*n==r) + if step < count then + _uv.queue_work(ctx,n,s) + step = step + 1 + if (step % 100==0) then + p(string.format('run %d%%', math.floor(step*100/count))) + end + end + end --after work, in loop thread + ) + local ls = string.rep('-',4096) + + _uv.queue_work(ctx,2,ls) + _uv.queue_work(ctx,4,ls) + _uv.queue_work(ctx,6,ls) + _uv.queue_work(ctx,-2,ls) + _uv.queue_work(ctx,-11,ls) + _uv.queue_work(ctx,2,ls) + _uv.queue_work(ctx,4,ls) + _uv.queue_work(ctx,6,ls) + _uv.queue_work(ctx,-2,ls) + _uv.queue_work(ctx,-11,ls) + _uv.queue_work(ctx,2,ls) + _uv.queue_work(ctx,4,ls) + _uv.queue_work(ctx,6,ls) + _uv.queue_work(ctx,-2,ls) + _uv.queue_work(ctx,-11,ls) + _uv.queue_work(ctx,2,ls) + _uv.queue_work(ctx,4,ls) + _uv.queue_work(ctx,6,ls) + _uv.queue_work(ctx,-2,ls) + _uv.queue_work(ctx,-11,ls) + end) +end) |