基本的にはCore Foundationのオブジェクトはスレッドセーフらしい。Cocoaのオブジェクトも基本的にはスレッドセーフだけど、NSRunLoopはダメとなっている。ようするに他人の(別スレッドの)実行ループを直接さわってはいけない、ということで当然という感じはする。 CFRunLoopやCFRunLoopSourceはどうか、というとReferenceには何も書いてなくて素直に読めば問題ないはずなんだけど、NSRunLoopがダメでCFRunLoopはOKというのもおかしな気がする。もともと違うスレッドからある作業を実行してもらうためのメカニズムなのでその属性をいろいろなスレッドから行う、ということは考えにくいのでスレッドセーフである必要性はあまりないはずである。