Лекция 1. Введение (что такое многопоточность и зачем она нужна)
Лекция 2. POSIX threads (обзор архитектуры, реализация в Solaris 10, обзор реализаций в других Unix-системах)
Лекция 3. Cоздание и удаление нитей (pthread_create, pthread_exit, pthread_join/detach, pthread_cancel)
Лекция 4. Дополнительные свойства нити (pthread_attr_t и операции над ним. Приоритеты нитей. Thread-specific data)
Лекция 5. Нити и стандартные библиотеки Unix презентация (thread-safe формы библиотечных функций, readp/writep, обработка сигналов, fork)
Лекция 6. Мониторинг поведения и отладка многопоточной программы
Лекция 7. Примитивы синхронизации – мутексы и блокировки чтения/записи (создание, уничтожение, захват и освобождение мутекса. Проблема мертвой блокировки. Атрибуты мутексов)
презентация – атрибуты мутексов
Лекция 8. Примитивы синхронизации – условные переменные (зачем это нужно на примере задачи производитель-потребитель, создание, уничтожение, использование)
Лекция 9. Примитивы синхронизации – семафоры-счетчики (неименованные семафоры, решение задачи производитель-потребитель на семафорах-счетчиках, именованные семафоры)
презентация – атрибуты мутексов Примеры кода
Лекция 10. Альтернатива многопоточности – асинхронный ввод/вывод (библиотека aio)
Лекция 11. Альтернатива многопоточности – select/poll (системные вызовы select и poll, реализация обработки нескольких соединений на основе select. Введение в событийно-ориентированные архитектуры)
Лекция 12. Событийно-ориентированная архитектура сетевого сервера (продолжение лекции 11)
Лекция 13. Архитектура worker threads (гибрид многопоточной и событийно-ориентированной архитектур)
Курс рассчитан на 1/2 семестра лекций (1 пара через неделю) и параллельно проводящийся семестровый практикум (1 пара в неделю). По часам это приблизительно соответствует пятидневному интенсивному курсу по шесть часов в день.