相关疑难解决方法(0)

"原子"在编程中意味着什么?

在Effective Java一书中,它指出:

语言规范保证读取或写入变量是原子的,除非变量是类型longdouble[JLS,17.4.7].

"原子"在Java编程或一般编程的上下文中意味着什么?

java atomic

250
推荐指数
5
解决办法
13万
查看次数

c#中类的内存对齐?

(顺便说一句.这是指32位操作系统)

一些更新:

  • 这绝对是一个对齐问题

  • 有时对齐(无论出于什么原因?)是如此糟糕,以至于对双倍的访问速度比其最快访问速度慢50倍.

  • 在64位机器上运行代码减少了问题,但我认为它仍然在两个时间之间交替(我可以通过将双倍更改为32位机器上的浮点数来获得类似结果)

  • 在mono下运行代码没有问题 - 微软,你有没有机会从那些Novell家伙那里复制一些东西?


有没有办法在c#中记忆对齐类的分配?

以下演示(我认为!)没有双打正确对齐的不良.它对存储在类中的double执行一些简单的数学计算,对每次运行进行计时,在变量上运行5次定时运行,然后再分配新的并重新执行.

基本上结果看起来像你有一个快速,中等或慢速的记忆位置(在我的古代处理器上,这些最终每次运行大约40,80或120ms)

我曾尝试使用StructLayoutAttribute,但没有任何乐趣 - 也许还有其他事情正在发生?

class Sample
{
    class Variable { public double Value; }

    static void Main()
    {
        const int COUNT = 10000000;
        while (true)
        {
            var x = new Variable();
            for (int inner = 0; inner < 5; ++inner)
            {
                // move allocation here to allocate more often so more probably to get 50x slowdown problem
                var stopwatch = Stopwatch.StartNew();

                var total = 0.0;
                for (int i = 1; …
Run Code Online (Sandbox Code Playgroud)

c# memory

14
推荐指数
2
解决办法
7281
查看次数

多线程读取静态对象是否安全?

没有线程会修改变量.他们都在阅读.这样安全吗?

c# thread-safety

2
推荐指数
1
解决办法
901
查看次数

标签 统计

c# ×2

atomic ×1

java ×1

memory ×1

thread-safety ×1