int main(int argc, char **argv) { Aria::init(); ArMutex mutex; mutex.setLogName("test mutex"); ArLog::log(ArLog::Normal, "This test succeeds if three (and only three) mutex lock/unlock time warning follow."); mutex.setUnlockWarningTime(1); // 1 sec mutex.lock(); mutex.unlock(); // should not warn mutex.lock(); ArUtil::sleep(2000); // 2 sec mutex.unlock(); // should warn mutex.lock(); ArUtil::sleep(500); // 0.5 sec mutex.unlock(); // should not warn mutex.setUnlockWarningTime(0.5); // 0.5 sec mutex.lock(); ArUtil::sleep(600); // 0.6 sec mutex.unlock(); // should warn mutex.lock(); ArUtil::sleep(200); // 0.2 sec mutex.unlock(); // should not warn mutex.lock(); mutex.unlock(); // should not warn mutex.setUnlockWarningTime(0.1); // 0.1 sec mutex.lock(); ArUtil::sleep(200); // 0.2 sec mutex.unlock(); // should warn mutex.setUnlockWarningTime(0.0); // off mutex.lock(); ArUtil::sleep(100); // should not warn mutex.unlock(); Aria::exit(0); }
int main(int argc, char **argv) { Aria::init(); ArMutex mutex; mutex.setLogName("test mutex"); ArLog::log(ArLog::Normal, "This test succeeds if three (and only three) mutex lock/unlock time warning follow."); puts("setting test_mutex warning time to 1 sec"); mutex.setUnlockWarningTime(1); // 1 sec puts("locking and unlocking immediately, should not warn..."); mutex.lock(); mutex.unlock(); // should not warn puts("locking and unlocking after 2 sec, should warn..."); mutex.lock(); ArUtil::sleep(2000); // 2 sec mutex.unlock(); // should warn puts("locking and unlocking after 0.5 sec, should not warn..."); mutex.lock(); ArUtil::sleep(500); // 0.5 sec mutex.unlock(); // should not warn puts("setting test_mutex warning time to 0.5 sec"); mutex.setUnlockWarningTime(0.5); // 0.5 sec puts("locking and unlocking after 0.6 sec, should warn..."); mutex.lock(); ArUtil::sleep(600); // 0.6 sec mutex.unlock(); // should warn puts("locking and unlocking after 0.2 sec, should not warn..."); mutex.lock(); ArUtil::sleep(200); // 0.2 sec mutex.unlock(); // should not warn puts("locking and unlocking immediately, should not warn..."); mutex.lock(); mutex.unlock(); // should not warn puts("setting test_mutex warning time to 0.1 sec"); mutex.setUnlockWarningTime(0.1); // 0.1 sec puts("locking and unlocking after 0.2 sec, should warn..."); mutex.lock(); ArUtil::sleep(200); // 0.2 sec mutex.unlock(); // should warn mutex.setUnlockWarningTime(0.0); // off mutex.lock(); ArUtil::sleep(100); // should not warn mutex.unlock(); // Create and destroy a few mutexes, locking them, etc. ArMutex *m1 = new ArMutex(); m1->setLogName("m1"); m1->lock(); ArMutex *m2 = new ArMutex(); m2->lock(); m2->setLogName("m2"); puts("unlocking m1 before destroying it..."); m1->unlock(); delete m1; puts("NOT unlocking m2 before destroying it..."); delete m2; puts("exiting with Aria::exit(0)..."); Aria::exit(0); }
int main(int argc, char **argv) { Aria::init(Aria::SIGHANDLE_THREAD, false); ArMutex mutex; mutex.setLogName("mutex"); ArMutex::setLockWarningTime(1); ArMutex::setUnlockWarningTime(5); TestThread thread1(1, mutex), thread2(2, mutex), thread3(3, mutex), thread4(4, mutex); thread1.setThreadName("thread1"); thread2.setThreadName("thread2"); thread3.setThreadName("thread3"); thread4.setThreadName("thread4"); srand(time(0)); thread1.create(); thread2.create(); thread3.create(); printf("main thread name=\"%s\", OS handle=%lu, OS pointer=0x%x\n", ArThread::getThisThreadName(), ArThread::getThisOSThread(), (unsigned int) ArThread::getThisThread()); printf("thread1 thread name=\"%s\", OS handle=%lu, OS pointer=0x%x\n", thread1.getThreadName(), thread1.getOSThread(), (unsigned int) thread1.getThread()); printf("thread2 thread name=\"%s\", OS handle=%lu, OS pointer=0x%x\n", thread2.getThreadName(), thread2.getOSThread(), (unsigned int) thread2.getThread()); printf("thread3 thread name=\"%s\", OS handle=%lu, OS pointer=0x%x\n", thread3.getThreadName(), thread3.getOSThread(), (unsigned int) thread3.getThread()); printf("thread4 (not created yet) thread name=\"%s\", OS handle=%lu, OS pointer=0x%x\n", thread4.getThreadName(), thread4.getOSThread(), (unsigned int) thread4.getThread()); if(ArThread::getThisOSThread() == thread1.getOSThread() || ArThread::getThisOSThread() == thread2.getOSThread() || ArThread::getThisOSThread() == thread3.getOSThread() || ArThread::getThisOSThread() == thread4.getOSThread() || thread1.getOSThread() == thread2.getOSThread() || thread1.getOSThread() == thread3.getOSThread() || thread1.getOSThread() == thread4.getOSThread() || thread2.getOSThread() == thread1.getOSThread() || thread2.getOSThread() == thread3.getOSThread() || thread2.getOSThread() == thread4.getOSThread() || thread3.getOSThread() == thread1.getOSThread() || thread3.getOSThread() == thread2.getOSThread() || thread3.getOSThread() == thread4.getOSThread() || thread4.getOSThread() == thread1.getOSThread() || thread4.getOSThread() == thread2.getOSThread() || thread4.getOSThread() == thread3.getOSThread() ) { puts("error, some thread IDs are the same!"); return 5; } thread4.runInThisThread(); Aria::shutdown(); return(0); }