pthread_mutex_t {aka union <anonymous>}' 没有名为 'abi' 的成员

pthread_mutex_t {aka union <anonymous>}’ has no member named ‘abi’

我一直在尝试编写一个基于名为 POOL 的可锁定队列(在本例中为 seq)的数据库连接池。我想将 POOL 作为全局变量,然后使用 initConnectionPool 来实例化它。我尝试使用下面的代码

var POOL: ConnectionPool

proc initConnectionPool*(initialPoolSize: static int) = 
  POOL = ConnectionPool(connections: @[])
  initLock(POOL.lock)

但是,这会引发编译器错误:

‘pthread_mutex_t {aka union <anonymous>}’ has no member named ‘abi’

我不太清楚这是什么意思,也不知道该怎么办。我该如何解决这个问题?

这似乎是 known issue。感谢 xflywind 帮助我找到了正确的答案。

proc 中的

POOL = ConnectionPool(connections: @[]) 是不允许的,这会导致此处出现编译问题。你在这里应该做的是,而不是实例化这个对象,只是在这里分配各个字段,就好像这个对象已经存在一样,因为在某种程度上,它已经存在了。

所以这将编译:

proc initConnectionPool*(initialPoolSize: static int) = 
  POOL.connections: @[]
  initLock(POOL.lock)