Coding
Concurrency

Fix the Lost Wakeup

Premium
Difficulty

Asked at Citadel Securities, Hudson River Trading

Theory: Concurrency From Scratch

Read the problem, hints and solution here. The editor needs a bigger screen: open this page on a laptop to write and run your code.

xxxx xxx xxxxxx xxxx xxxxxx xxxx. xxxxxxxx xx x xxx-xxxx xxxxxxx xxxxxxx x xxxxxxxx xxx x xxxxxxxx, xxx xxx xxxxxxx xx xx xxxxx xx xx xxxx:

xxxx xxx(xxxx xxxx x) {
    xxx::xxxxxx_xxxx<xxx::xxxxx> x(xxxxx_);
    xx (xxxx_) xx_.xxxx(x);          // xx xxxxxxxxx
    xxxxx_ = x; xxxx_ = xxxx;
    xx_.xxxxxx_xxx();                // xxx xx, xxx xxxxx xx xxxxxx
}

xxxx xxxxx, xxxxx xxxxxxxx xxxx, xxx xxxx xxx xxxxx xx xxxxxx xx xxxx xxx xxxxxxx.

x. xx xxxxxx xxxx xxxxx. x xxxxxxxxx xxxxxxxx xxx xxxx xxxxxxxxxx, xxx xxxx xxxxxxx xxxx, x xxxxxx xxxxx xx x xxxxxx xxx xxxx xxxxxxx xxxxxx xxx xxxxx xxxxx. xxxxxxxxxx xxxxxxx xxxxxxxxxx xxxx xx x xxxxxxxxx xxxx xx xxx xxxx. x. xxx xxxxxxxxx xxxxxxxx xxx xxx xxxxxxxxxx. x xxxxxxxx xxxxxxx xxx xxxxx xxx x xxxxxxxx xxxxxxx xxx x xxxxx xxxxx xx xxx xxxx xxxxxxxx, xx xxxxxx_xxx xxx xxxx xxx xxxxx xxxx. xxxx xxxxxx xxxxxxxx, xxxxx xxx xxxxxxxxx xxxxx, xxx xxxx xxxx xx xxxxx, xxxxx xxx xxxxxx xxxx xxxxx xxxx xxxx xxxxxxxx xxx xxxxx xxxxx. xxxxxxx xxxxxxx xxxxxxxxxx. xxx xxxxxx xxxx xxxxx. x. xxxxxxx xx xxxx xx xxxxx. x xxxxxx xxxxxxx xxxx xxx xxxxxxx xxxxx xxxx xxxxx xxxxxxx.

xxxxxxxxx xx xxxxxxxxx.

  • xxx(xxxxx) — xxxxx xxxxx x xxxxx xx xxxxxxx xxxxxxx
  • xxxx() — xxxxxxx (xx, xxxxx); xx xx xxxxx xxxx xxxx xxx xxxxxxx xx xxxxxx xxx xxxxx
  • xxxxx(), xxxxxx(), xxxxx()

xxxxxxxxxxx

  • x xxxxx xxxx x xxxxx xxxxx xx xxxxxx xxxx xxxxxxx xx. xxxxxxxx xxxxx xxxxxxxx xxxx xxxxxxxx xxxx, xx xxx xxxx xxxxxxx xx x xxxxxxx xx xxxx.
  • x xxx xxxxx xxxxx() xx xxxxxxx: xxx xxxxx xx xxxxxxx, xxx xxxxxxxxx.
  • xxxxx xxxxx xxxxxxxx xxxxxx xxxxx xxxx xx xxxxx xxxxxxx xxxx, xxx xxx xxxxx xxxxx xxxx xxxxxxxxx. xxx xxxxx xxxx xxxxxxxxx xxx xxxxxxxxx xxxxxxx xx xxx xxxxx xxxxx xxxxxx, xx x xxxx xx x xxxxxxx xxxxxx xxxx x xxxx xxxx.
  • xxxxxxx xxxxxxx xxxxxxx xxxx xxxxx() xx xxxxxx xxxx xx xxxxxxxx. xxxxxxxx xxxxx xxx xxx xxxx xxxx xxxxxxx xxxx xxxxxxxxxx, xxxxxxx xxxx xxxx xxxxxx xx xxx xxx xxx.

This problem is only available to subscribers.

Language: C++Handover
Sample tests

Unlock the problem to run it against the tests.