| 810 | } |
| 811 | |
| 812 | static void DoSubA(TCont* cont, void* argPtr) { |
| 813 | TState& state = *(TState*)argPtr; |
| 814 | state.SubAState = EState::Running; |
| 815 | TCont* subC = cont->Executor()->Create(DoSubC, argPtr, "SubC"); |
| 816 | while (state.SubBState != EState::Running && state.SubCState != EState::Running) { |
| 817 | cont->Yield(); |
| 818 | } |
| 819 | cont->Join(subC); |
| 820 | UNIT_ASSERT_EQUAL(state.SubCState, EState::Finished); |
| 821 | state.SubA = nullptr; |
| 822 | state.SubAState = EState::Finished; |
| 823 | } |
| 824 | |
| 825 | static void DoMain(TCont* cont, void* argPtr) { |
| 826 | TState& state = *(TState*)argPtr; |