Собственно такие ошибки сразу видно, нельзя мешать атомарный доступ с обычным. Но это так, придирки, гораздо интереснее вот что: зачем вообще нужно WRITE_PENDING? Почему нельзя так:
C++ (Qt)
...
m_data = tmp; //tmp is ready, assign m_data to it
...
А разве это присваивание атомарно?
![Улыбающийся](http://prog.org.ru/forum/Smileys/default/smiley.gif)
(возможно и да, но это не обещается). А вообще конечно можно, но получается очень неудобно: текста в LoadPage довольно много и все время нужно помнить что mData надо держать = 0.