Beispiel #1
0
void test_atomic_int ()
{
    // Test and, or, xor
    ai = 42;
    ai &= 15; OIIO_CHECK_EQUAL (ai, 10);
    ai |=  6; OIIO_CHECK_EQUAL (ai, 14);
    ai ^= 31; OIIO_CHECK_EQUAL (ai, 17);
    ai = 42;
    int tmp;
    tmp = ai.fetch_and(15); OIIO_CHECK_EQUAL(tmp,42); OIIO_CHECK_EQUAL(ai,10);
    tmp = ai.fetch_or ( 6); OIIO_CHECK_EQUAL(tmp,10); OIIO_CHECK_EQUAL(ai,14);
    tmp = ai.fetch_xor(31); OIIO_CHECK_EQUAL(tmp,14); OIIO_CHECK_EQUAL(ai,17);
}
Beispiel #2
0
void test_atomic_int (int numthreads, int iterations)
{
    ai = 42;
    thread_group threads;
    for (int i = 0;  i < numthreads;  ++i) {
        threads.create_thread (do_int_math, iterations);
    }
    ASSERT ((int)threads.size() == numthreads);
    threads.join_all ();
    OIIO_CHECK_EQUAL (ai, 42);

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