gpt4 book ai didi

multithreading - 在多线程代码(通用Lisp)中使用库函数

转载 作者:行者123 更新时间:2023-12-03 13:15:13 24 4
gpt4 key购买 nike

当可以从多个线程访问/更新变量时,通常需要保护它免受同时更改的影响。一种有效的方法是使用原子函数来保证互斥访问。例如(sb-ext:atomic-incf *count*)。另一种方法是像(bt:with-lock-held (*lock*) (incf *count*))这样在更新操作周围包裹一个锁,但这有点昂贵。

有没有一种有效的方法可以在多线程代码中包含库函数(例如来自亚历山大图书馆)?例如,是否要从多个线程执行(alexandria:deletef x *list*)?还是需要锁? (ps:我假设deletef需要保护,但不能完全确定。)

最佳答案

您可以使用STMX来获得具有“乐观锁定”的软件交易。

这适用于标记为事务性的类,也可以与库提供的事务性原语一起使用:tcell,tcons等。您需要使用它们,或将其他东西包装到其中。这些结构中的场所可用于场所机器,因此像alexandria:deletef这样的库函数就可以正常工作。

关于multithreading - 在多线程代码(通用Lisp)中使用库函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55961071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com