1.一种多线程访问方法,其特征在于,所述方法包括:
响应于线程对函数对象的访问,调用全局锁的全局临界区对象对全局键值对表进行加锁,所述全局键值对表包括锁对象和与其对应的键值之间的对应关系;
创建锁对象,为创建的锁对象生成用于记录锁对象引用次数的引用计数器,并将创建的锁对象以及所述锁对象与指定的键值之间的对应关系添加到所述全局键值对表;
调用所述全局临界区对象对所述全局键值对表进行解锁;
当所述线程调用所述全局锁加锁时,将创建的锁对象的键值作为加锁时的键值,调用所述全局临界区对象对全局键值对表进行加锁;
根据加锁时的键值查找所述全局键值对表,以获取与该键值对应的锁对象,并对获取到的锁对象对应的引用计数进行更新;
调用所述全局临界区对象对所述全局键值对表进行解锁;
调用获取到的锁对象为所述线程访问的函数对象进行加锁。
2.根据权利要求1所述的方法,其特征在于,在所述线程完成对所述函数对象的访问后,所述方法还包括:当所述线程调用所述全局锁解锁时,将创建的锁对象的键值作为解锁时的键值,调用所述全局临界区对象对所述全局键值对表进行加锁;
根据解锁时的键值查找所述全局键值对表,以获取与该键值对应的锁对象;
调用获取到的锁对象对所述线程访问的函数对象进行解锁,并对获取到的锁对象对应的引用计数进行更新;
根据更新后的引用计数判定所述锁对象是否存在线程调用,若所述锁对象不存在线程调用,则释放所述锁对象;
调用所述全局临界区对象对所述全局键值对表进行解锁。
3.根据权利要求2所述的方法,其特征在于,当调用获取到的锁对象为所述线程访问的函数对象进行加锁时,所述对获取到的锁对象对应的引用计数进行更新,包括:对获取到的锁对象对应的引用计数加一;
当调用获取到的锁对象对所述线程访问的函数对象进行解锁时,所述对获取到的锁对象对应的引用计数进行更新,包括:对获取到的锁对象对应的引用计数减一。
4.根据权利要求2所述的方法,其特征在于,在所述释放所述锁对象之后,所述方法还包括:从所述全局键值对表中移除所述锁对象以及所述锁对象和与其对应的键值之间的对应关系。
5.一种多线程访问装置,其特征在于,所述装置包括:
第一加锁模块,用于响应于线程对函数对象的访问,调用全局锁的全局临界区对象对全局键值对表进行加锁,所述全局键值对表包括锁对象和与其对应的键值之间的对应关系;
配置模块,用于创建锁对象,为创建的锁对象生成用于记录锁对象引用次数的引用计数器,并将创建的锁对象以及所述锁对象与指定的键值之间的对应关系添加到所述全局键值对表;
第一解锁模块,用于调用所述全局临界区对象对所述全局键值对表进行解锁;
第一加锁模块,还用于当所述线程调用所述全局锁加锁时,将创建的锁对象的键值作为加锁时的键值,调用所述全局临界区对象对全局键值对表进行加锁;
查找模块,用于根据加锁时的键值查找所述全局键值对表,以获取与该键值对应的锁对象,并对获取到的锁对象对应的引用计数进行更新;
第一解锁模块,还用于调用所述全局临界区对象对所述全局键值对表进行解锁;
第二加锁模块,用于调用获取到的锁对象为所述线程访问的函数对象进行加锁。
6.根据权利要求5所述的装置,其特征在于,所述第一加锁模块,还用于在所述线程完成对所述函数对象的访问后,当所述线程调用所述全局锁解锁时,将创建的锁对象的键值作为解锁时的键值,调用所述全局临界区对象对所述全局键值对表进行加锁;
所述查找模块,还用于根据解锁时的键值查找所述全局键值对表,以获取与该键值对应的锁对象;
所述装置还包括:
第二解锁模块,用于调用获取到的锁对象对所述线程访问的函数对象进行解锁,并对获取到的锁对象对应的引用计数进行更新;
所述配置模块,还用于根据更新后的引用计数判定所述锁对象是否存在线程调用,若所述锁对象不存在线程调用,则释放所述锁对象;
所述第一解锁模块,还用于调用所述全局临界区对象对所述全局键值对表进行解锁。
7.根据权利要求6所述的装置,其特征在于,所述第二加锁模块,具体用于当调用获取到的锁对象为所述线程访问的函数对象进行加锁时,对获取到的锁对象对应的引用计数加一;
所述第二解锁模块,具体用于当调用获取到的锁对象对所述线程访问的函数对象进行解锁时,对获取到的锁对象对应的引用计数减一。
8.根据权利要求6所述的装置,其特征在于,所述配置模块,还用于在释放所述锁对象之后,从所述全局键值对表中移除所述锁对象以及所述锁对象和与其对应的键值之间的对应关系。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-4任一项所述方法的步骤。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-4任一项所述方法的步骤。