/** * Thread for erasing items from a shared list. * * @param hSelf The thread handle. * @param pvUser The provided user data. */ DECLCALLBACK(int) mttest6(RTTHREAD hSelf, void *pvUser) { MTTESTLISTTYPE<MTTESTTYPE> *pTestList = (MTTESTLISTTYPE<MTTESTTYPE> *)pvUser; /* Try to delete items from random places. */ for (size_t i = 0; i < MTTESTITEMS; ++i) { /* Make sure there is at least one item in the list. */ while (pTestList->isEmpty()) {}; pTestList->removeAt(RTRandU32Ex(0, (uint32_t)pTestList->size() - 1)); } return VINF_SUCCESS; }
/** * Thread for replacing items in a shared list. * * @param hSelf The thread handle. * @param pvUser The provided user data. */ static DECLCALLBACK(int) MtTest5ThreadProc(RTTHREAD hSelf, void *pvUser) { MTTESTLISTTYPE<MTTESTTYPE> *pTestList = (MTTESTLISTTYPE<MTTESTTYPE> *)pvUser; /* Try to replace C items from random places. */ for (size_t i = 0; i < MTTESTITEMS; ++i) { /* Make sure there is at least one item in the list. */ while (pTestList->isEmpty()) RTThreadYield(); pTestList->replace(RTRandU32Ex(0, (uint32_t)pTestList->size() - 1), 0xFF00FF00); } return VINF_SUCCESS; }