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); }
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); }