如何在线程/进程间共享一个variables?

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

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

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

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

请注意, 线程与进程不同 。 线程根据定义共享一个共同的单一地址空间 。 使用线程,主要的问题是大多数同步,通常使用互斥体 (例如pthread_mutex_lock等)。 在Linux上,阅读pthread tutorial & pthreads(7)

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

最后,我不太确定共享像你这样的变量是实现你的目标的最好方法(我肯定会考虑一些事件循环的 消息传递方法: pipe(7)和poll(2) ,或许一个JSON 文本协议 )。