例如,在多线程程序中,Global,volatile,extern变量可以归入临界区,因为它们可以同时被多个线程访问。 shmget()也分配共享内存。 我想知道所有其他内存类型在用户空间和内核空间中都是关键部分。
答案 0 :(得分:0)
共享内存通常包含在关键部分中。共享内存的原因可以由多个线程一次访问。为了确保一次仅由一个线程访问某些共享内存,使用关键部分。
不确定共享内存是否进一步分类。
答案 1 :(得分:0)
查看这些链接,以便更好地了解共享内存区域,并在实际系统中执行 critical sections 。
bcook.cs.georgiasouthern.edu/cs523/critical.htm
blogs.msdn.com/b/larryosterman/archive/2005/08/24/455741.aspx
ibm.com/developerworks/linux/library/l-linux-synchronization/index.html
答案 2 :(得分:0)
当你谈论不同的概念时,共享内存可能会有所不同,即两个使用公共数据的进程,例如队列,你需要注意"注意"修改/添加/删除时的关键部分。 至于线程,除了堆栈和代码段之外,所有内容都是共享的,因此理论上主进程所达到的每条数据都是这些线程之间的共享内存。