0

例如,在一个多线程程序中,全局变量、易失变量、外部变量可以归入临界区,因为它们可以同时被多个线程访问。shmget() 也分配共享内存。我想知道所有其他内存类型在用户空间和内核空间中都可以是关键部分。

4

3 回答 3

0

共享内存通常包含在临界区中。原因是共享内存可以同时被多个线程访问。为了确保某个共享内存一次只能由一个线程访问,使用了临界区。

不确定共享内存是否进一步分类。

于 2012-10-14T15:40:38.713 回答
0

查看这些链接,以更好地了解共享内存区域和实际系统中的关键部分。

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

于 2012-10-14T16:29:48.060 回答
0

当您谈论不同的概念时,共享内存可能会有所不同,即使用公共数据的两个进程,例如队列,您需要在修改/添加/删除时“注意”关键部分。至于线程,除了堆栈和代码段之外,所有东西都是共享的,因此理论上主进程到达的每条数据都是这些线程之间的共享内存。

于 2012-10-14T17:44:39.293 回答