1) **Unix Threads in C (плейлист с лекциями);**
2) От cwatcher 07/09/2021 :
Хорошо сделанные философы живут в случаях: 21 290 100 100 50 210 100 100 199 2000 600 60 на школьных Маках с одновременно работающей конференцией в Зуме
;
3) От armaxima 06/12/2021 : знакомые скинули литературу по многопоточности, со стр. 157, может пригодится:
Osnovy_parallelnogo_programmirovania_2015.pdf
4) Для проверок : Визуализатор по логам философов: https://nafuka11.github.io/philosophers-visualizer/ ; Тест: https://github.com/cacharle/philosophers_test ; Проверка на гонку данных при компиляции (запихнуть во FLAGS в Makefile): fsanitize=thread -g ; Проверка на утечки (напоминаем): “leaks —atExit — ./” Чек-лист: https://github.com/caecitasminimus/school21-checklists/blob/master/ng_3_philosophers.pdf ;
5) Инфа для philosopher :
Что за потоки: https://learnc.info/c/processes_and_threads.htmlhttps://habr.com/ru/post/326138/
Создание потока: https://learnc.info/c/pthreads_create_and_join.html
Что за мютексы: ?
Взятие времени: https://www.opennet.ru/man.shtml?topic=gettimeofday&category=2&russian=0
Что за семафоры: https://learnc.info/c/pthreads_semaphores.htmlhttps://it.wikireading.ru/24889
О дедлоке и заодно пример для philo_one: https://learnc.info/c/pthreads_deadlock.html
6) Лекция по многопоточности от @pdemocri : ?
«Посвящается депрессивному Лёхе — Лёха, не бомби!»
Для предварительного изучения:
ВАЖНО ПОНИМАТЬ:
я буду называть в этом гайде “философов” потоками, а “вилки” мьютексами, так как нахожу иносказательность в данном контексте излишней;
в основной части под “философами” я буду подразумевать только “дочерние” структуры, а в бонусах - процесс-потомок;
с - это секунда, мс - это миллисекунда (10-3с.), мкс - это микросекунды (10-6с.);
с отчётом гонки данных всё интуитивно понятно - там выделяются те строки, к которым в один момент времени обращаются два потока - бэд стори, непорядок, исправляй мьютексами! В бонусах не работает, так как многопроцессорность ☹️