谢谢回复,我又仔细看了一下lock.lua的代码,确实直接注释掉是不对的。
但我仍然觉得在188行有问题,对于创建的一个lock对象,多次调用lock/unlock方法则每次都会去执行unref_obj(cdata.dict_id)
假设cdata.dict_id = 3, 那每次执行unlock方法都会将memo[3]放到FREE_LIST中去,如果memo[3]当前正被其他lock对象引用,是不是会造成混乱?
我现在采取的办法是在188行下再加一行cdata.dict_id = -1,保证多次调用lock/unlock方法时只在第一次执行unref_obj(cdata.dict_id)
虽然反复看代码确认这个方案应该可行,但仍需要向大家确认一下,求指导,谢谢。