atomicity

    21热度

    5回答

    在大多数我读过的讨论,则表明做出财产原子并不能保证它是线程安全的,它只是保证返回的值不会由于一个对象写入到另一个对象而造成垃圾,另一个尝试同时读取它。 我知道这不是线程安全的,因为第三个对象可能会写入它,而访问它的对象不会返回垃圾,但并不完全确定它将返回多个对象写入的值它在同一时间,它可能会得到他们的任何价值。 所以当我们说它不会返回垃圾的时候,垃圾就意味着如果一个对象是非原子的,并且一个对象在另

    1热度

    1回答

    我正在用Python编写一个奇妙的应用程序,它将S3中的一堆数据加载到Redshift集群中。如有必要,应用程序会针对多个表发出一堆DDL,然后通过几个COPY语句将数据加载到这些表中。 为了使整个过程尽可能快地运行,我使用了后端端口futures module和psycopg2's ThreadedConnectionPool来并行地在多个连接上分配DDL和加载活动。 它似乎运作良好。现在我想让

    4热度

    4回答

    我不得不线程之间的访问同步到共享对象,其状态由几个字段。你说: class Shared{ String a; Integer b; //constructor, getters and setters .... } 我有可能是多个线程读取这个对象,做 //readers shared.getA(); shared.getB(); ,只有一个线程会在某一点上写: //write

    4热度

    4回答

    我阅读的AtomicInteger和这些特性如何的操作都是原子,以及如何使之成为多线程有用。 我写了下面的程序来测试一样。 我期待设定的最终大小应该是1000,因为每个线程循环500次,每次一个线程调用GETNEXT时间假设()它应该得到一个唯一的编号。 但产量总是低于1000我失去了什么吗? public class Sequencer { private final AtomicInteg

    0热度

    1回答

    我有一个struct,它由在两个动态链接库(或共享对象)之间共享的普通旧数据组成。 (用C++ 11编译)。 其中一个数据成员必须是原子类型,或者更确切地说,我需要能够自动应用前缀++和--。 我担心会员使用std::atomic<unsigned int>,因为我认为这会将两个库绑定到使用相同的STL实现。 所以我宁愿使用std::uint32_t作为成员,并将原子操作应用于库中的该成员。只有我

    6热度

    1回答

    这是我从threads::shared说明写着: 默认情况下,变量是对每个线程专用,每个新创建的线程获取每个存在的变量的专用副本。此模块可让您在不同的线程共享变量... (more) 比方说,我有一个这样的共享变量: my $var :shared; $var = 10; 这意味着变量所有我创建的线程中仅存在一次。 现在关于原子性和可见性: 如果thread_A赋新值让我们说11: $var

    0热度

    1回答

    下面是一个可能的场景:一个php页面访问会话的一些会话变量与SSID 1000的会话。在另一个选项卡上,用户注销,这意味着销毁当前会话。我会假设最坏的情况会发生:代码仍然在第1页运行。在那种情况下会发生什么?第1页的代码是否仍然使用SSID 1000中的会话变量,现在不存在?我可以使用“try catch”块来处理引发的潜在异常吗?对于SSID 1000的会话,会话增值会发生什么,我可能会在第1页

    1热度

    1回答

    我读取像boolean,byte,short,char,int和float这样的原始数据类型是原子的。像long和double这样的64位数据类型不是。 但这是什么意思?当我有2个线程在一个int变量上递增和递减比有时我仍然有竞争条件。例如 例如将数量添加到变量的字节码。 getfield #2 <Field int amount> iload_1 iadd putfield #2 <Fie

    8热度

    2回答

    我可以想到当它无关紧要时的原因,以及1种情况,您可能不想使用它们,这是您想要测试非原子操作行为的设计。 有什么其他原因?具体来说,我正在研究一个具有一些罕见竞争条件的项目,因为测试不使用原子增量。我想知道,为什么我不会总是使用原子增量,当它的函数已经存在? 谢谢!

    1热度

    1回答

    在mongodb手册中,有一个用于在单个文档上进行原子操作的example。 book = { _id: 123456789, title: "MongoDB: The Definitive Guide", available: 3, checkout: [ { by: "joe", date: ISODate("2012-10-15") }