У меня есть игровой сервер, который создает поток для каждого клиента с помощью forkIO. Я хочу, например, поделиться со всеми списком клиентов и списком монстров.
Моя первая идея заключалась в том, чтобы иметь один контейнер TVar для типа данных, содержащего оба списка, но, скажем, два потока одновременно изменяют клиента и монстра, что приведет к откату одного из них, если я правильно понял эту часть. Что было бы ненужным откатом.
Вторая идея заключалась в том, чтобы создать списки TVars, а затем просто передать их в качестве аргументов, но я бы предпочел, чтобы они были в контейнере, чтобы код оставался чистым и легко управляемым, если нужно добавить больше списков.
Есть ли способ передать пару TVar в контейнере, или я слишком много думаю над первой идеей?