Ejemplo n.º 1
0
void test_atomic_int64 ()
{
    // Test and, or, xor
    all = 42;
    all &= 15; OIIO_CHECK_EQUAL (all, 10);
    all |=  6; OIIO_CHECK_EQUAL (all, 14);
    all ^= 31; OIIO_CHECK_EQUAL (all, 17);
    all = 42;
    long long tmp;
    tmp = all.fetch_and(15); OIIO_CHECK_EQUAL(tmp,42); OIIO_CHECK_EQUAL(all,10);
    tmp = all.fetch_or ( 6); OIIO_CHECK_EQUAL(tmp,10); OIIO_CHECK_EQUAL(all,14);
    tmp = all.fetch_xor(31); OIIO_CHECK_EQUAL(tmp,14); OIIO_CHECK_EQUAL(all,17);
}
Ejemplo n.º 2
0
void test_atomic_int64 (int numthreads, int iterations)
{
    all = 0;
    thread_group threads;
    for (int i = 0;  i < numthreads;  ++i) {
        threads.create_thread (do_int64_math, iterations);
    }
    threads.join_all ();
    OIIO_CHECK_EQUAL (all, 0);

    // Test and, or, xor
    all = 42;
    all &= 15; OIIO_CHECK_EQUAL (all, 10);
    all |=  6; OIIO_CHECK_EQUAL (all, 14);
    all ^= 31; OIIO_CHECK_EQUAL (all, 17);
    all = 42;
    long long tmp;
    tmp = all.fetch_and(15); OIIO_CHECK_EQUAL(tmp,42); OIIO_CHECK_EQUAL(all,10);
    tmp = all.fetch_or ( 6); OIIO_CHECK_EQUAL(tmp,10); OIIO_CHECK_EQUAL(all,14);
    tmp = all.fetch_xor(31); OIIO_CHECK_EQUAL(tmp,14); OIIO_CHECK_EQUAL(all,17);
}