Coding
Concurrency

Transfer Without Deadlock

Premium
Difficulty

Asked at Squarepoint Capital, Chicago Trading Company

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.

x xxxxxxxxxx xxxxxxx xxxx xxx xxxxx. xx xxxx xxxxx, xxxxx xx xxx, xxxxxxx xxxxx, xxxxx xxxxxxxxxx xxxx xxxxx xxxxx xxxxx xxxxx xx xxxxxx xx. xxx xxxxxxx xxx xx xxxxx xxx xx xxxx xxx xxxx xxxxxxx xxx xx xxxxx x xxxxxxxx xxxxxxx xxx xxxxxxx xxxxxxxx: xxxx xxx xxxxxx, xxxx xxx xxxxxxxxxxx, xxxx xxx xxxxx. xxx xxxxxxx xxxxx xxxx xx xxxxxxxx xxxxxxxxxx xx xxx xxxx xxxxxx xxxx xxxx xxx xxxx xxx xxxxx xxxxx, xxx xxxxxxx xxxx xxxx xxx xx.

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

xxxx xxxxxxxx(xxxxxxx& xxxx, xxxxxxx& xx, xxxx xxxx xxxxxx) xxxx:

  • xxxxxx xxxxx xxx xxxxxx xxxxxxx xx xxxx xxxxxx xxxxx xxxxxx, xx xx xxxxxx xx xxxxxxxx;
  • xxxx xxx xxxxx xxxxx xxxx xxxxx, xx xxxx xx xxxxxxxx xxx xxxxx xxxx xxxxx xxx xxxxx xxx x xxxxxx xxxxx xx xxx xxxx xxx xxxxxxx xxx xxx xxxxxxx xx xxx xxxxx;
  • xxxxx xxxxxxxx, xxxxxxxx xxxxx xx xxxxxxxx xxxxx xxxxxxx xxx xxxxxxxxxxxx xxxxxxx xx xxx xxxx xxxx;
  • xxxx xxxx x xxxxxxxx xxxx xx xxxxxxx xx xxxxxx, xxxxx xxxx xxx xxxx xxx xxxx xxxxx xxxxx.

xxxxxxx xxxxxxx xxx xxxxx xxx, xxx xxxx xxxx xxxxx xx, x xxxxxxxxx xx xxx xxx xxxxxxx. xxxxx_xxxxx xx xxx xxxxx'x xxxxxxxx: xx xxxxx xxxx xxxxxxxx xxx xxxxx xxxx xxxxxxxx.

xxxxxxxx

xxxxxxx x(xxx), x(xx);
xxxxxxxx(x, x, xxx);   // xxxxx, x == xxx, x == xx
xxxxxxxx(x, x, xxx);   // xxxx,  x == x,   x == xxx
xxxxxxxx(x, x, xx);    // xxxxx: x == x xxxxxx xxxxx xx

xxxxxxx x(xx);
xxxxxxxx(x, x, xx);    // xxxx, x == xx, xxx xx xxxxxxx

xxxxxxxxxxx

  • xxx xxxxxx xxxxx xxx xxx xxxxxxx xxxxxxxxxxxx xx xxxxxxxx xxxxxxxxxx xxx xxxxxxxx xxxxx xxxx, xxx xxxxx xxxxxxx xxxxxx x xxxx xx xxxx xxxxxxxx. x xxxxx xxxx xxxxx xxxx xxx xxxx xxxxx xxxxx. xx xxxxx xxxx, xxx xxx xxxxx xxxxxxx xxx xxxx xx x xxxx xxxxx.
  • xx xxxxxxxx xxxxxx xxxxxxx xxxxx_xxxxx xxxxxxxxxxxx xxxxx xxxxxxxxx xxx xxx xxxxxx xxxxx xxxxxx xxxx xx xxx xxx xxxxxxxx xxx. xxx xxxxxxxx xxxxx xx xxxx. xxxxxxx xxx xxxxxxx, xxxxxxxx xx, xxxxxxxxx, xxxx xxxxxxx xxx xxxxx xx xxx xxx xxxx xxxxxxx.
  • xxx::xxxxxx_xxxx xxxxxx xxx xxxx xxxxxxx. xx xxxx xxx::xxxx. xx xxxx xxxxxxxx xx xxxxxxx. xxx xx xxxx xx x xxxxxxx xxxxxx, xxx xxxxx xxxx xx xxx xxx xx xxx xxxxxxxxx.

This problem is only available to subscribers.

Language: C++23transfer

Unlock the problem to run it against the tests.