Others may have more insights, but with -threaded, `safe` FFI calls run in their own threads as to not block your Haskell thread. So even with -N1 you can have (arbitrarily?) many OS threads, depending on how many safe foreign calls you do.