Coding
Concurrency

Thread Pool With a Work Queue

Premium
Difficulty

Asked at Squarepoint Capital, Hudson River Trading, 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.

xxxxx xxxxxxx xxxxxx xxxx x xxxxxx xxxx: xxxxxxx xxxxxxx xxxxxxxxxxxxxx, xxx-xx-xxx xxxx xxxxx, xxxxxxxxx-xxxx xxxxxxxxx, xxxxxxxx xxxx xxxx xxx xxxxx xxxxxx xxxx xxx xxx xxxx xxxx xxxxxx xxxx xxx. xxxxxxxx x xxxxxx xxx xxxx xx xxx xxxxx xxxxxxxxxxx, xxx xx xxxx xx xxxxx: xxxxxx xxxxxxxx xxxxx xxxx xx xxxxxxxxxxxx xxx xxx xxxxxxxxx xxxxxxxx. x xxxx xxxxxx xxx xxxxxxx xxxx xxx xxxxx xxxx xxxx x xxxxx.

xxxxxxxxx xxxxxxxxxx:

  • xxxxxxxx xxxxxxxxxx(xxx::xxxx_x xxxxxxxxxxx): xxxxxx xxxxxxx xxxxxxxxxxx xxxxxx xxxxxxx, xxxx, xxxx. xxxxxxxxxxx >= x.
  • xxxx xxxxxx(xxx::xxxxxxxx<xxxx()> xxxx): xxxxxxxx x xxxx xxx xxxxxxxxx xx xxxx xxxxxx. xxxxx xxxxxx xxx xxxxxx xxxxxxx xxx xxx xxxx xx xxx, xxx xxxxx xxxxxxxx xxx xxxx xxxxxx xx xxx xxxxxxxxxx xxxxxx. xxxx xxxxxx xxxxxx xxxxxxxxxxx xxxxxx, xxx xxxx xxxx xxx xxxxxx xx x xxxx.
  • ~xxxxxxxxxx(): xxxxx xxxxxxxxx. xxxxx xxxx xxxxxxxxx xxxxxx xxx xxxxxxxxxx xxx xxxxxxx xxxx xxxxxx xxxxxxxxx, xxxx xxx xxxxxxx xxx xxxxxx. xxxxxxx xxxxxxx xxxxxxxx xxx xx xxxxxxx. (xxx xxxxxxxxxxx xxxxxx, xxxxxxxx xxx xxxxxxx xxx xxxxxxxx xxxx, xx x xxxxxxxxxx xxxxxx; xx xx xxxx xxx xxxx xxx.)

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

xxxxxxxx

[]{ xxx::xxxxxx<xxxx xxxx> xxxxx{x}; { xxxxxxxxxx xxxx(x); xxx (xxx x = x; x < xxxxxx; ++x) xxxx.xxxxxx([&xxxxx] { xxxxx.xxxxx_xxx(x, xxx::xxxxxx_xxxxx_xxxxxxx); }); } xxxxxx xxxxx.xxxx(); }()
// xxxxxx  (xxxxxxxxxx xxxxxxx: xxxxx xxxx xxx xxxxxxx xxxx)

[]{ xxx::xxxxxx<xxx> xxxx; xxx::xxxxx x; { xxxxxxxxxx xxxx(x); xxx (xxx x = x; x < xxxx; ++x) xxxx.xxxxxx([&xxxx, &x, x] { xxx::xxxx_xxxxx<xxx::xxxxx> xxxx(x); xxxx.xxxx_xxxx(x); }); } xxx::xxxx(xxxx.xxxxx(), xxxx.xxx()); xxx::xxxxxx<xxx> xxxxxxxx(xxxx); xxx::xxxx(xxxxxxxx.xxxxx(), xxxxxxxx.xxx(), x); xxxxxx xxx::xxxxx<xxxx xxxx, xxxx xxxx, xxxx>(xxxxxx_xxxx<xxxx xxxx>(xxxx.xxxx()), xxx::xxxxxxxxxx(xxxx.xxxxx(), xxxx.xxx(), xxx), xxxx == xxxxxxxx); }()
// (xxxx, xxxxxxx, xxxx)  (xx xxxx xxxx, xx xxxx xxxxxxxxxx)

xxxxxxxxxxx

  • xxxxxxxxxxx xx xxxxxxx x xxx x xx xxx xxxxx; xx xx (xx^x) xxxxx xxx xxxxxxxxx xxxxxxx xxx xxxx.
  • xxxxx xxx xxxxx; xxx xxxx'x xxx xxxxxxxx xxxxxxxxx. xxx-xxxxxx xxxx xxxx xx (x(x)) xxxxxxxxx: xxx xxxx xxxxxxxxxxx xxx xxx xxxxxx, xx xxxxxx xxxxxxxx.
  • xxx xxxxxxxxxx xxxx xx xxxx xxxx xxxxx xxx xxxxx xxxxxx: xxxxx, xxxx xxxx xxxxx xxxxxx. xxxxxxx x xxxxxxxx xxx::xxxxxx xxxxxxxxxx xxx xxxxxxx xxx xxxxx xxxxxxxxxx.
  • xxx xxxxx xxxxxxxx xxxxxxxxxx xxxxxxxxx (xxxxxx, xxxx, xxxxx xxxxxxxxx xxxxx xxxx). xx xxxxxx xxx x xxxx-xxxx xx x xxxx xxxx xxxx xxxxxxx xx xxxxxxx xxx xxxxx xxx; xxx xxxxxxxxxxxxxxx xxxxxxx xx xxx xxxx xxxx xxxxxxx.

This problem is only available to subscribers.

Language: C++ThreadPool
Sample tests

Unlock the problem to run it against the tests.