这个模型对 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()
在这里可能是合适的(发送函数在存储数据并发布指针后执行屏障;接收函数在读取数据之前执行屏障)。
我有两个线程(主线程和后台线程),它们可以通过套接字对进行通信。主线程等待从套接字读取。后台线程加载并处理一个文件,然后它应该将该数据发送到主线程。
仅通过套接字从后台线程发送指针是个好主意吗?一旦我在主线程上收到指向它的指针,我能确定所有数据都处于正确状态吗?
我问这个问题,因为我想知道处理器中的内存缓存是否有任何问题,因为后台线程可能 运行 在不同的内核上运行。
我正在研究 iOS 和 OS X,我可以将套接字等待集成到 运行 循环中(使用 CFSocket)。
我知道使用GCD可能更好,但我想学习pthreads。
read()
和 write()
未包含在 "functions that synchronize memory" 的 POSIX 列表中,因此从技术上讲,POSIX 不能保证这会起作用。
您需要使用 POSIX 同步函数 - 例如,pthread_barrier_wait()
在这里可能是合适的(发送函数在存储数据并发布指针后执行屏障;接收函数在读取数据之前执行屏障)。