// tests fail then with rather cryptic messages, memory dumps and stuff).
// Any idea how to make the test work and reasonably safe?
TEST(MutexTest, DISABLED_destroyLocked) {
- // TODO: This probably won't work for non-debug mutexes. Disable on non-debug
- // compilation.
+ // TODO: This probably won't work for non-debug mutexes. Disable on
+ // non-debug compilation.
Mutex* mutex = new Mutex;
new Mutex::Locker(*mutex);
EXPECT_THROW(delete mutex, isc::InvalidOperation);
const unsigned long long iterations = 10000;
const unsigned long long value = 2000;
void
-performStrangeOperation(long long unsigned* array, int direction,
- Mutex* mutex)
+performStrangeOperation(long long unsigned* array, int direction, Mutex* mutex)
{
unsigned long long position = 0;
- for (size_t i = 0; i < iterations; i ++) {
+ for (size_t i = 0; i < iterations; ++i) {
Mutex::Locker lock(*mutex);
while (array[position % length] < value) {
position += direction;
if (p2 % length == position % length) {
continue;
}
- array[p2 % length] ++;
- value --;
+ ++array[p2 % length];
+ --value;
}
array[position % length] = 0;
}
// This type has a low chance of being atomic itself, further raising
// the chance of problems appearing.
long long unsigned array[length];
- for (size_t i = 0; i < length; ++ i) {
+ for (size_t i = 0; i < length; ++i) {
array[i] = value;
}
Mutex mutex;
t1.wait();
t2.wait();
long long unsigned sum = 0;
- for (size_t i = 0; i < length; ++ i) {
+ for (size_t i = 0; i < length; ++i) {
sum += array[i];
}
EXPECT_EQ(length * value, sum) << "Threads are badly synchronized";
// started in parallel (the other tests wait for the previous one to terminate
// before starting new one).
-const size_t iterations = 200;
-const size_t detached_iterations = 25;
-
using namespace isc::util::thread;
namespace {
+const size_t iterations = 200;
+const size_t detached_iterations = 25;
void
doSomething(int* x) {