lua生産者-消費者学習

1034 ワード

第九章を読み続けますが、今回は英語版を見ています.読むのは難しくありません.コードを少し勉強します.
典型的な生産者-消費者モデル:
produter生成Salt,consumer消費:
--  
local function producer()
	return coroutine.create(
	function(salt)
		local t = {1,2,3}
		for i = 1,#t do
			salt = coroutine.yield(t[i] + salt)
			--salt consumer       
			print('producer salt',salt)
		end
	end
	)
end

function consumer(prod)
	local salt = 10
	while true do
		local running ,product = coroutine.resume(prod, salt) --salt producer coroutine.yield    ,salt  producer       salt
		if running == false then
			return
		else
			print('running:',running,',produtc:',product,',salt:',salt)
			salt = salt*salt
		end
	end
end

consumer(producer())

実行結果:
>lua -e "io.stdout:setvbuf 'no'""cor.lua"  running: true ,produtc: 11 ,salt: 10 running: true ,produtc: 102 ,salt: 100 running: true ,produtc: 10003,salt: 10000 running: true ,produtc: nil ,salt: 100000000 >Exit code: 0
luaの関数の戻り値はまだ卵が痛いので、私を見てやっと分かりました.