我有一个游戏服务器,它使用 forkIO 为每个客户端生成一个线程。例如,我想与所有客户共享客户列表和怪物列表。
我的第一个想法是为包含两个列表的数据类型创建一个 TVar 容器,但假设两个线程同时更改客户端和怪物,如果我理解该部分正确,这将回滚其中一个。这将是不必要的回滚。
第二个想法是制作列表 TVar,然后将它们作为参数传递,但如果要添加更多列表,我宁愿将它们放在容器中以保持代码清洁和易于管理。
有没有办法在一个容器中传递几个 TVar 或者我是否过度考虑了第一个想法?
我有一个游戏服务器,它使用 forkIO 为每个客户端生成一个线程。例如,我想与所有客户共享客户列表和怪物列表。
我的第一个想法是为包含两个列表的数据类型创建一个 TVar 容器,但假设两个线程同时更改客户端和怪物,如果我理解该部分正确,这将回滚其中一个。这将是不必要的回滚。
第二个想法是制作列表 TVar,然后将它们作为参数传递,但如果要添加更多列表,我宁愿将它们放在容器中以保持代码清洁和易于管理。
有没有办法在一个容器中传递几个 TVar 或者我是否过度考虑了第一个想法?