One thought is ‘or’ is generally not the right C syntax unless you have defined something special or include a special header. The normal C syntax would be (task_a_awoken || task_b_awoken)
Note, as Richard Barry says, the big risk is that if this interrupt occurs before the task suspends itself, the resume gets lost. Better to have that task wait for a notification like the first one (or wait on a semaphore).
C++ allows the use of names instead of symbols for the boolean operators, as shown here: and, or, not. One can also use the type bool as primitive type as well, instead of the Bool macro found in <stdbool.c>.