// thread function for readers
void func_readers()
{
for (int i = 0; i < 1000000; ++i)
{
read_lock();
//do some work;
}
}
// thread function for writers
void func_writers()
{
write_lock();
// do some work;
}
Допустим, есть 4 потока чтения, и начинает работать поток записи. Он останавливается, так как имеется 4 потока чтения. Когда первый поток чтения завершает итерацию, он запускает другую и вызывает read_lock(). поток записи все еще ждет, так как есть 3 потока чтения. Поскольку записывающего потока нет, первый читающий поток начинает другую итерацию и так далее... Значит ли это, что все 4 потока будут выполнять свою работу 1000000 раз, и только после этого начнет выполнять свою работу записывающий поток?