我有一个服务器为每个传入请求生成一个新进程或线程,我需要从线程和进程读取和写入此服务器中定义的变量。由于服务器程序需要在UNIX和Windows上工作,我需要以可移植的方式共享变量,但我该怎么做?
我需要使用标准C库或本机系统调用,所以请不要建议使用第三方库。
答案 0 :(得分:2)
shared memory是特定于操作系统的。在Linux上,考虑阅读shm_overview(7)和(因为共享内存总是需要某种方式来同步)sem_overview(7)。
当然,您需要找出类似(但可能不相同)的Windows函数调用。
请注意,threads与processes不同。根据定义,线程共享一个共同的单address space。对于线程,主要问题主要是同步,通常使用mutexes(例如pthread_mutex_lock
等...)。在Linux上,阅读pthread tutorial& pthreads(7)
回想一下,几个库(glib,QtCore,Poco,...)提供了高于操作系统特定功能的有用抽象,但您似乎想要避免它们。
最后,我完全不确定像你一样分享变量是实现目标的最佳方法(我肯定会考虑使用message passing event loop pipe(7)方法。{{3 }}& poll(2),也许带有textual protocolàlaJSON)。