这个模型对 pthreads 安全吗?

Is this model safe with pthreads?

我有两个线程(主线程和后台线程),它们可以通过套接字对进行通信。主线程等待从套接字读取。后台线程加载并处理一个文件,然后它应该将该数据发送到主线程。

仅通过套接字从后台线程发送指针是个好主意吗?一旦我在主线程上收到指向它的指针,我能确定所有数据都处于正确状态吗?

我问这个问题,因为我想知道处理器中的内存缓存是否有任何问题,因为后台线程可能 运行 在不同的内核上运行。

我正在研究 iOS 和 OS X,我可以将套接字等待集成到 运行 循环中(使用 CFSocket)。

我知道使用GCD可能更好,但我想学习pthreads。

read()write() 未包含在 "functions that synchronize memory" 的 POSIX 列表中,因此从技术上讲,POSIX 不能保证这会起作用。

您需要使用 POSIX 同步函数 - 例如,pthread_barrier_wait() 在这里可能是合适的(发送函数在存储数据并发布指针后执行屏障;接收函数在读取数据之前执行屏障)。