LiteLDev / ScriptX

A versatile script engine abstraction layer.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Py: GIL加锁处理改进

yqs112358 opened this issue · comments

commented

GIL不能嵌套加锁,目前的方案是只要有引擎enter就加锁。因此在多个引擎递归enter时,不能有效保护多个引擎的多线程访问
需要封装一个可以嵌套加锁的GIL Helper类:计数从0->1时加锁的同时锁上GIL,1->0时解锁的同时解锁GIL,其他计数下正常加锁解锁即可。
然后在EngineScope中直接加锁,析构时直接解锁即可。

现有加锁模型偶有出现死锁情况

commented

已彻底解决此问题