![]() |
1
7
贯穿许多软件系统的根深蒂固的假设是,大多数程序员都是顺序程序员。这种情况最近才开始改变。
|
![]() |
2
8
实现共享内存只是
记住,你可以永远
添加
指针类型的最终限定符,但不能删除它们。所以,现在
根据你的建议 常见的 这个案子将不得不抛弃这种不稳定因素。 |
![]() |
3
4
即使它是易失性的,也可以很容易地让两个进程从同一个内存中读取不同的值,所需的只是3。进程在从1读取到内存之间的纳秒内写入。进程和2的读取。进程(除非您可以保证两个进程在几乎完全相同的时钟周期内读取相同的内存。 将 需要让所有参与的人合作,并意识到他们如何更新彼此之间的记忆-一些超出mmap范围的东西,一些自愿的东西无法解决。 |
![]() |
4
2
我不认为
基本上,它只是告诉编译器不要通过将变量的值存储在寄存器中来优化变量。这将强制它在每次引用它时检索该值,如果另一个线程(或其他任何线程)可以在此期间更新它,这是一个好主意。 该函数返回一个void*,但它不会被更新,因此调用它volatile是没有意义的。即使将该值赋给局部volatile void*,也不会得到任何结果。 |
![]() |
5
0
这样做可能是出于性能原因,默认情况下不提供任何额外功能。如果您知道在您的特定体系结构上,写入/读取不会被处理器重新排序,那么您可能根本不需要volatile(可能与其他同步结合使用)。编辑:这只是一个例子-可能还有其他各种情况下,你知道你不需要强制重读每次访问内存。 如果您需要确保每次访问时都从内存中读取所有地址,那么const\ u cast(或C-style cast)volatile将其转换为返回值。 |
![]() |
6
0
类型
也就是说,从全局来看,我同意你的观点:mmap应该有一个返回类型,声明编译器不应该缓存这个范围。 |
![]() |
Community wiki · C中有哪些耗时的操作? 1 年前 |
![]() |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
![]() |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
![]() |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |