Задачи по многопоточному программированию на с++
Привет!
1) Есть готовая реализация lock free skipl list
нужно помочь разобраться в программе и дописать нужные бенчмарки
Бенчмарки — (1) 90% чтений, 5% вставок, 5% удалений (более-менее стандартная map, надо предзаполнить, чтобы был норм размер); (2) 50% чтений, 50% вставок (параллель в реальной жизни — это у вас c0 часть lsm дерева, удаления элементов — это вставка маркеров удаления и после переполнения ваш skiplist просто сериализуется на диск)
2) В программе есть master thread & worker threads. У каждого worker'а есть его собственная очередь задач. Мастер забирает байты из множества дескрипторов в event loop, организованный с помощью асинхронных средств (epoll, kqueue, IO completion ports, etc.)., и раздаёт задачи worker'ам. Желательно, чтобы мастер при этом учитывал текущую загруженность worker'ов.
Если у worker'а нет текущих задач, он должен "украсть" задачу из очереди другого worker'а в пуле. Желательно красть у кого-то наиболее загруженного. На эту тему (work stealing) см. книгу Herlihy.
Очереди организовывать с помощью coarse-grained средств (семафоры, мьютексы, conditional variables)
часть задачи описана тут https://habr.com/ru/post/656515/
Нужно решить одну из задач или обе.
30-40$ за задачу
Есть 1-2 дня на реализацию