2012-09-08 49 views
1

有沒有辦法知道執行Lua腳本的線程(協程)是否在lua_pushcclosure調用的起始位置?Lua c-api:如何識別lua_pushcclosure回調中涉及的協程/線程?

爲了管理一些與lua線程相關的東西(延遲暫停/恢復或私有線程變量),我需要確定回調中涉及的線程。我知道我可以通過使用lua_gettop創建它時獲取線索索引,但是我找不到使用它的方法,因此它有助於在從Lua腳本發出lua_pushcclosure調用時識別線程。

我現在的系統允許嵌套的腳本調用,這樣一個腳本可以執行其他腳本(每個嵌套腳本調用創建一個新線程具有相同lua_state,因此用於獲取棧多線程條目lua_state。)

我正在使用Lua 5.2

+0

「lua_pushcclosure回調」'lua_pushcclosure'不是回調。你在說什麼時候你打電話給那個功能? –

+0

是的我正在討論在lua腳本中調用函數的時間。通過'lua_pushcclosure'公開的函數可以從不同的線程調用,我需要確定哪一個。 – Valkea

回答

2

如果您使用的是從Lua調用的C函數,並且您想知道您所在的線程...只需撥打lua_pushthread(L)即可。

+0

你是對的(像往常一樣)它的工作原理。謝謝! – Valkea