Лекция 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)
Лекция 4. Нити и стандартные библиотеки Unix? презентация (thread-safe формы библиотечных функций, readp/writep, обработка сигналов, fork)
Лекция 5 Мониторинг поведения и отладка многопоточной программы?
Лекция 6. Примитивы синхронизации – мутексы и блокировки чтения/записи? (создание, уничтожение, захват и освобождение мутекса. Проблема мертвой блокировки. Атрибуты мутексов)
Лекция 7. Примитивы синхронизации – условные переменные? (зачем это нужно на примере задачи производитель-потребитель, создание, уничтожение, использование)
Лекция 8. Примитивы синхронизации – семафоры-счетчики? (решение задачи производитель-потребитель на семафорах-счетчиках)
Лекция 9. Альтернатива многопоточности – асинхронный ввод/вывод? (библиотека aio)
Лекция 10. Альтернатива многопоточности – select/poll? (системные вызовы select и poll, реализация обработки нескольких соединений на основе select. Введение в событийно-ориентированные архитектуры)
Лекция 11. Событийно-ориентированная архитектура сетевого сервера? (продолжение лекции 9)
Лекция 12. Архитектура worker threads? (гибрид многопоточной и событийно-ориентированной архитектур)
Курс рассчитан на 1/2 семестра лекций (1 пара через неделю) и параллельно проводящийся семестровый практикум (1 пара в неделю). По часам это приблизительно соответствует пятидневному интенсивному курсу по шесть часов в день.