MCPcopy Create free account
hub / github.com/catboost/catboost / RunSyncronize

Method RunSyncronize

util/system/condvar_ut.cpp:92–120  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

90 }
91
92 void RunSyncronize() {
93 for (size_t i = 0; i < 10; ++i) {
94 TGuard<TMutex> guard(Data_.mutex);
95 ++Data_.in;
96 if (Data_.in.load() == TotalIds_) {
97 Data_.out.store(0);
98 Data_.condVar1.BroadCast();
99 } else {
100 ++Data_.waited;
101 while (Data_.in.load() < TotalIds_) {
102 bool res = Data_.condVar1.WaitT(Data_.mutex, TDuration::Seconds(1));
103 FAIL_ASSERT(res == true);
104 }
105 }
106
107 ++Data_.out;
108 if (Data_.out.load() == TotalIds_) {
109 Data_.in.store(0);
110 Data_.condVar2.BroadCast();
111 } else {
112 while (Data_.out.load() < TotalIds_) {
113 bool res = Data_.condVar2.WaitT(Data_.mutex, TDuration::Seconds(1));
114 FAIL_ASSERT(res == true);
115 }
116 }
117 }
118
119 FAIL_ASSERT(Data_.waited.load() == (TotalIds_ - 1) * 10);
120 }
121
122 void RunSyncronizeWithPredicate() {
123 for (size_t i = 0; i < 10; ++i) {

Callers

nothing calls this directly

Calls 5

SecondsFunction · 0.70
loadMethod · 0.45
storeMethod · 0.45
BroadCastMethod · 0.45
WaitTMethod · 0.45

Tested by

no test coverage detected