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 testExecPerSecond(int numberOfThreads, int numberOfKeys)
{
	ThreadPool<Task> pool;

	pool.init(numberOfThreads, numberOfKeys, 10000);

	for (long long int i = 0; ; ++i) {
		Task t(i % numberOfKeys);
		pool.enqueue(t);

		if (i % 100000 == 0) {
			int execCounterCur = execCounter.load();
			int millisCur = getMilliseconds();

			if (execCounterPrev != 0) {
				int counterDif = execCounterCur - execCounterPrev;
				long long int millisDif = millisCur - millisPrev;

				long long int execPerSec = (counterDif / millisDif) * 1000;

				cout << "exec per sec: " << execPerSec << "" << endl;
			}

			execCounterPrev = execCounterCur;
			millisPrev = millisCur;
		}
	}
}
Beispiel #3
0
void testCountTotal(int numberOfThreads, int numberOfKeys, int numberOfTasks)
{
	execCounter.store(0);

	{
		ThreadPool<Task> pool;
		pool.init(numberOfThreads, numberOfKeys, 10000);

		for (long long int i = 0; i < numberOfTasks; ++i) {
			Task t(i % numberOfKeys);
			while (pool.enqueue(t) != 0);
		}
	}

	if (execCounter.load() != numberOfTasks) {
		throw std::logic_error("test4: invalid exec count!");
	}
}
Beispiel #4
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);
}