如何在线程/进程之间可移植地共享变量?

时间:2014-07-13 16:12:11

标签: c windows unix

我有一个服务器为每个传入请求生成一个新进程或线程,我需要从线程和进程读取和写入此服务器中定义的变量。由于服务器程序需要在UNIX和Windows上工作,我需要以可移植的方式共享变量,但我该怎么做?

我需要使用标准C库或本机系统调用,所以请不要建议使用第三方库。

1 个答案:

答案 0 :(得分:2)

shared memory是特定于操作系统的。在Linux上,考虑阅读shm_overview(7)和(因为共享内存总是需要某种方式来同步)sem_overview(7)

当然,您需要找出类似(但可能不相同)的Windows函数调用。

请注意,threadsprocesses不同。根据定义,线程共享一个共同的单address space。对于线程,主要问题主要是同步,通常使用mutexes(例如pthread_mutex_lock等...)。在Linux上,阅读pthread tutorial& pthreads(7)

回想一下,几个库(glibQtCorePoco,...)提供了高于操作系统特定功能的有用抽象,但您似乎想要避免它们。

最后,我完全不确定像你一样分享变量是实现目标的最佳方法(我肯定会考虑使用message passing event loop pipe(7)方法。{{3 }}& poll(2),也许带有textual protocolàlaJSON)。