A SystemC thread can block for a given amount of time using the wait function in the SystemC library (not the Posix namesake).
Waiting for an arbitrary boolean expression to hold hard to implement on top of C++ owing to its compiled nature:
waituntil(mycount.delayed() > 5 && !reset.delayed());
Poor user had to just insert the delayed keyword where needed and then ignore it when reading the code.
It was too unwieldly, now removed. So today use the less-efficient:
do { wait(0, SC_NS); } while(!((mycount > 5 && !reset)));