>>390
Nimでは競合状態を防ぐためにスレッド毎にガーベージコレクタで管理されたヒープメモリを持っていて、
グローバル変数以外スレッド間で共有できなくなっています。
そのおかげでガーベージコレクタが効率よく動きます。
コンパイル時にスレッド間でヒープメモリを共有していないかチェックします。

詳しくはこちら
nim-lang.org/docs/manual.html#threads

Channelを使ってスレッド間でデータのやりとりができます。
nim-lang.org/docs/channels_builtin.html

試験段階ですがthreadpoolモジュールにあるParallelとSpawnを使って並列処理できます。
nim-lang.org/docs/manual_experimental.html#parallel-amp-spawn
nim-lang.org/docs/threadpool.html

Nimの標準ライブラリじゃないのですがWeaveというパフォーマンス重視なライブラリもあります。
github.com/mratsim/weave