测试
#878909
为了研究其他的lisp是怎么保证线程安全的,于是去研究ChezScheme的源码,注意到里面有一个名为"tc_mutex_acquire"的函数或宏经常出现在一些内置的过程里,查看得知,这是一个用来获取全局唯一的互斥量的函数或宏。也就是说,通过获取和释放全局唯一的互斥量的方式来保证线程安全。
#878917
这样的好处是,绝对不会发生死锁;缺点是任意时刻,有且只有一个线程在运行。
很类似python的GIL,是我想过但不敢做的实现方式。
于是把自己的解释器的锁全删了,换成这个。
然后惊奇地发现,单核性能竟然稍微提升了一丢丢。因为之前是需要上多个锁的,现在只要上一个锁就够了,减少了上锁的次数。
很类似python的GIL,是我想过但不敢做的实现方式。
于是把自己的解释器的锁全删了,换成这个。
然后惊奇地发现,单核性能竟然稍微提升了一丢丢。因为之前是需要上多个锁的,现在只要上一个锁就够了,减少了上锁的次数。
#924340
更新了闭包和作用域的实现,使得解释器的运行效率有很大提升