ݺߣ

ݺߣShare a Scribd company logo
Часть 1. Архитектура 30
Глава 2. TM для потоков. 31
Вычисления в потоке 32 
- полезная работа 
- потери времени
Два вида потерь времени 33
1. Поток ждет ответа 34
Задача о спящем парикмахере 35 
Эдгар Дейкстра, 1967
Что делать? 36 
Асинхронность 
На время ожидания освободить поток, чтобы 
дать возможность выполнить другую задачу
Жадные операции 37 
Императивные языки 
Vs 
Функциональные языки
Почему функциональные языки? 38 
int c = 0; 
for(int i =0; ; ++i) 
{ 
c += i; 
} 
void print(int i, int *c) 
{ 
*c += i ; 
print(i+1, c); 
}
Что будет с эффективностью? 39 
Что если, ожидание > 50 
милисекунд? 
Время отклика > 100 
милисекунд?
Стайер vs спринтер 40
benchmarksgame.alioth.debian.org 41
benchmarksgame.alioth.debian.org 42
benchmarksgame.alioth.debian.org 43
benchmarksgame.alioth.debian.org 44
Императивность тоже может! 45 
while(условие) 
{ 
//тело цикла 
Здесь может быть код, который будет 
передавать эстафету в другой поток 
вычислений 
}
А как же эффективность? 46 
Philipp Haler, Martin 
Odersky 
Event-Based 
Programming Without 
Inversion Control 
2006 Scala, C# 5 (await)
Пример await на C# 47 
static async Task SavePage(string file, string a) 
{ 
using (var stream = File.AppendText(file)) 
{ 
var html = await new 
WebClient().DownloadStringTaskAsync(a); 
await stream.WriteAsync(html); 
} 
}
2. Лишние действия 48
Что делать? 49 
Делегирование 
Передать выполнение задач в другой поток
Ограничения делегирования 50 
Трудоемкость делегируемой задачи vs время 
на ее передачу 
• Чем меньше размер делегируемой задачи, 
тем ниже КПД (закон Амдала) 
• => Запуск потока по требованию – слишком 
дорогая операция
Ограничения делегирования 51 
Количество потоков vs время на управление 
потоками 
• Слишком большое число потоков приводит 
к потерям производительности 
• При небольшом числе потоков количество 
текущих задач больше числа потоков => 
нужна очередь задач
Архитектура Fog cutter 52 
Gul A. Agha, 
Karmani 2011 
Распространенная 
архитектура для 
вычислительных 
агентов
Эволюция асинхронности 53 
1. Пул потоков 
public static void Main() { 
ThreadPool.QueueUserWorkItem( 
new WaitCallback(ThreadProc)); 
Thread.Sleep(1000); 
} 
static void ThreadProc(Object stateInfo) { …}
Эволюция асинхронности 54 
2. Асинхронные callback’s 
public class MyClass { 
public IAsyncResult BeginSend(string host, int port, byte[] buffer, 
int offset, int size, AsyncCallback asyncCallback, object state) { 
SendAsyncResult result = new SendAsyncResult( host, port, bufferБ 
offset, size, asyncCallback, state, this /*owner*/, "send"); 
result.Process(); 
return result; 
} 
public void EndSend(IAsyncResult result) 
{ 
AsyncResultNoResult.End(result, this, "send"); 
} 
}
Эволюция асинхронности 55 
3. Оператор await 
static async Task SavePage(string file, string a) 
{ 
using (var stream = File.AppendText(file)) 
{ 
var html = await new 
WebClient().DownloadStringTaskAsync(a); 
await stream.WriteAsync(html); 
} 
}
Эволюция асинхронности 56 
4. Библиотеки для параллельных циклов и не 
только 
foreach (var item in sourceCollection) { 
Process(item); 
} 
Parallel.ForEach(sourceCollection, item => 
Process(item));
Эволюция асинхронности 57 
Встраивание конструкций в язык 
????? 
par_foreach (var item in sourceCollection) { 
Process(item); 
}
Эволюция асинхронности 58 
1. Пул потоков 
2. Асинхронные callback’s 
3. Оператор await 
4. Библиотеки для параллельного циклов и не 
только 
5. Встраивание конструкций в язык
Пул потоков 59
Простой пул потоков 60 
http://www.regfordev.com/2010/12/thread-pool. 
html 
http://www.regfordev.com/2010/12/thread-pool.html
Пул потоков в .Net 4.0 61
Еще один пул потоков 62 
Балансировщик Очереди потоков Потоки
Производитель-потребитель 63 
http://alice.pnzgu.ru/~dvn/complex/gl5.htm

More Related Content

What's hot (20)

Python и Cython
Python и CythonPython и Cython
Python и Cython
Alexander Shigin
Максим Хижинский Lock-free maps
Максим Хижинский Lock-free mapsМаксим Хижинский Lock-free maps
Максим Хижинский Lock-free maps
Platonov Sergey
Atomics, CAS and Nonblocking algorithms
Atomics, CAS and Nonblocking algorithmsAtomics, CAS and Nonblocking algorithms
Atomics, CAS and Nonblocking algorithms
Alexey Fyodorov
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
Mikhail Kurnosov
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Mikhail Kurnosov
Опыт разработки статического анализатора кода
Опыт разработки статического анализатора кодаОпыт разработки статического анализатора кода
Опыт разработки статического анализатора кода
Andrey Karpov
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Yandex
Поговорим о микрооптимизациях .NET-приложений
Поговорим о микрооптимизациях .NET-приложенийПоговорим о микрооптимизациях .NET-приложений
Поговорим о микрооптимизациях .NET-приложений
Andrey Akinshin
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Mikhail Kurnosov
Продолжаем говорить о микрооптимизациях .NET-приложений
Продолжаем говорить о микрооптимизациях .NET-приложенийПродолжаем говорить о микрооптимизациях .NET-приложений
Продолжаем говорить о микрооптимизациях .NET-приложений
Andrey Akinshin
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
aragozin
Miasm defcon russia 23
Miasm defcon russia 23Miasm defcon russia 23
Miasm defcon russia 23
DefconRussia
KharkivJS 2017: Коллаборативные системы и CRDT
KharkivJS 2017: Коллаборативные системы и CRDTKharkivJS 2017: Коллаборативные системы и CRDT
KharkivJS 2017: Коллаборативные системы и CRDT
Max Klymyshyn
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Yandex
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программированияПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
Alexey Paznikov
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Alexey Paznikov
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Ontico
11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)
Smolensk Computer Science Club
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Ontico
Распространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложений
Mikhail Shcherbakov
Максим Хижинский Lock-free maps
Максим Хижинский Lock-free mapsМаксим Хижинский Lock-free maps
Максим Хижинский Lock-free maps
Platonov Sergey
Atomics, CAS and Nonblocking algorithms
Atomics, CAS and Nonblocking algorithmsAtomics, CAS and Nonblocking algorithms
Atomics, CAS and Nonblocking algorithms
Alexey Fyodorov
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
Mikhail Kurnosov
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Mikhail Kurnosov
Опыт разработки статического анализатора кода
Опыт разработки статического анализатора кодаОпыт разработки статического анализатора кода
Опыт разработки статического анализатора кода
Andrey Karpov
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Yandex
Поговорим о микрооптимизациях .NET-приложений
Поговорим о микрооптимизациях .NET-приложенийПоговорим о микрооптимизациях .NET-приложений
Поговорим о микрооптимизациях .NET-приложений
Andrey Akinshin
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Mikhail Kurnosov
Продолжаем говорить о микрооптимизациях .NET-приложений
Продолжаем говорить о микрооптимизациях .NET-приложенийПродолжаем говорить о микрооптимизациях .NET-приложений
Продолжаем говорить о микрооптимизациях .NET-приложений
Andrey Akinshin
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
aragozin
KharkivJS 2017: Коллаборативные системы и CRDT
KharkivJS 2017: Коллаборативные системы и CRDTKharkivJS 2017: Коллаборативные системы и CRDT
KharkivJS 2017: Коллаборативные системы и CRDT
Max Klymyshyn
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Yandex
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программированияПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
Alexey Paznikov
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Alexey Paznikov
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Ontico
11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)
Smolensk Computer Science Club
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Ontico
Распространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложений
Mikhail Shcherbakov

Viewers also liked (8)

Стажировка 2015. Разработка. Занятие 5. Использование nginx
Стажировка 2015. Разработка. Занятие 5. Использование nginxСтажировка 2015. Разработка. Занятие 5. Использование nginx
Стажировка 2015. Разработка. Занятие 5. Использование nginx
7bits
разработка серверов и серверных приложений лекция №4
разработка серверов и серверных приложений лекция №4разработка серверов и серверных приложений лекция №4
разработка серверов и серверных приложений лекция №4
Eugeniy Tyumentcev
Эффективное взаимодействие ИТ-компаний и вузов на примере Омска
Эффективное взаимодействие ИТ-компаний и вузов на примере ОмскаЭффективное взаимодействие ИТ-компаний и вузов на примере Омска
Эффективное взаимодействие ИТ-компаний и вузов на примере Омска
Anna Tarasenko
Качественный код? Миф!
Качественный код? Миф!Качественный код? Миф!
Качественный код? Миф!
Eugeniy Tyumentcev
Рефакторинг rails-приложения. С чего начать?
Рефакторинг rails-приложения. С чего начать?Рефакторинг rails-приложения. С чего начать?
Рефакторинг rails-приложения. С чего начать?
Ivan Nemytchenko
ActiveRecord vs Mongoid
ActiveRecord vs MongoidActiveRecord vs Mongoid
ActiveRecord vs Mongoid
Ivan Nemytchenko
Coffescript - счастье для javascript-разработчика
Coffescript - счастье для javascript-разработчикаCoffescript - счастье для javascript-разработчика
Coffescript - счастье для javascript-разработчика
Ivan Nemytchenko
Tequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSONTequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSON
Ivan Nemytchenko
Стажировка 2015. Разработка. Занятие 5. Использование nginx
Стажировка 2015. Разработка. Занятие 5. Использование nginxСтажировка 2015. Разработка. Занятие 5. Использование nginx
Стажировка 2015. Разработка. Занятие 5. Использование nginx
7bits
разработка серверов и серверных приложений лекция №4
разработка серверов и серверных приложений лекция №4разработка серверов и серверных приложений лекция №4
разработка серверов и серверных приложений лекция №4
Eugeniy Tyumentcev
Эффективное взаимодействие ИТ-компаний и вузов на примере Омска
Эффективное взаимодействие ИТ-компаний и вузов на примере ОмскаЭффективное взаимодействие ИТ-компаний и вузов на примере Омска
Эффективное взаимодействие ИТ-компаний и вузов на примере Омска
Anna Tarasenko
Качественный код? Миф!
Качественный код? Миф!Качественный код? Миф!
Качественный код? Миф!
Eugeniy Tyumentcev
Рефакторинг rails-приложения. С чего начать?
Рефакторинг rails-приложения. С чего начать?Рефакторинг rails-приложения. С чего начать?
Рефакторинг rails-приложения. С чего начать?
Ivan Nemytchenko
Coffescript - счастье для javascript-разработчика
Coffescript - счастье для javascript-разработчикаCoffescript - счастье для javascript-разработчика
Coffescript - счастье для javascript-разработчика
Ivan Nemytchenko
Tequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSONTequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSON
Ivan Nemytchenko

Similar to разработка серверов и серверных приложений лекция №2 (20)

Multithreading in java past and actual
Multithreading in java past and actualMultithreading in java past and actual
Multithreading in java past and actual
Yevgen Levik
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Platonov Sergey
Multimaster2
Multimaster2Multimaster2
Multimaster2
Stas Kelvich
"Мультимастер для PostgreSQL" Кельвич Станислав, Книжник Константин, PostgresPro
"Мультимастер для PostgreSQL" Кельвич Станислав, Книжник Константин, PostgresPro"Мультимастер для PostgreSQL" Кельвич Станислав, Книжник Константин, PostgresPro
"Мультимастер для PostgreSQL" Кельвич Станислав, Книжник Константин, PostgresPro
it-people
Java осень 2014 занятие 6
Java осень 2014 занятие 6Java осень 2014 занятие 6
Java осень 2014 занятие 6
Technopark
CPU Performance in Java.
CPU Performance in Java.CPU Performance in Java.
CPU Performance in Java.
Dzmitry Hil
Java осень 2013 лекция 6
Java осень 2013 лекция 6Java осень 2013 лекция 6
Java осень 2013 лекция 6
Technopark
JPoint 2016 - Etudes of DIY Java profiler
JPoint 2016 - Etudes of DIY Java profilerJPoint 2016 - Etudes of DIY Java profiler
JPoint 2016 - Etudes of DIY Java profiler
Anton Arhipov
Юнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, GoogleЮнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, Google
yaevents
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX ThreadsПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
Alexey Paznikov
20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov
Computer Science Club
JavaDay'14
JavaDay'14JavaDay'14
JavaDay'14
Kirill Golodnov
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
Alexey Paznikov
Иван Пузыревский — Введение в асинхронное программирование
Иван Пузыревский — Введение в асинхронное программированиеИван Пузыревский — Введение в асинхронное программирование
Иван Пузыревский — Введение в асинхронное программирование
Yandex
Денис Колодин: Low-latency и soft-realtime на Python
Денис Колодин: Low-latency и soft-realtime на PythonДенис Колодин: Low-latency и soft-realtime на Python
Денис Колодин: Low-latency и soft-realtime на Python
it-people
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVM
Tech Talks @NSU
Как мы храним 75 млн пользователей (Денис Бирюков)
Как мы храним 75 млн пользователей  (Денис Бирюков)Как мы храним 75 млн пользователей  (Денис Бирюков)
Как мы храним 75 млн пользователей (Денис Бирюков)
Ontico
Распространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложений
Andrey Akinshin
Multithreading in java past and actual
Multithreading in java past and actualMultithreading in java past and actual
Multithreading in java past and actual
Yevgen Levik
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Platonov Sergey
"Мультимастер для PostgreSQL" Кельвич Станислав, Книжник Константин, PostgresPro
"Мультимастер для PostgreSQL" Кельвич Станислав, Книжник Константин, PostgresPro"Мультимастер для PostgreSQL" Кельвич Станислав, Книжник Константин, PostgresPro
"Мультимастер для PostgreSQL" Кельвич Станислав, Книжник Константин, PostgresPro
it-people
Java осень 2014 занятие 6
Java осень 2014 занятие 6Java осень 2014 занятие 6
Java осень 2014 занятие 6
Technopark
CPU Performance in Java.
CPU Performance in Java.CPU Performance in Java.
CPU Performance in Java.
Dzmitry Hil
Java осень 2013 лекция 6
Java осень 2013 лекция 6Java осень 2013 лекция 6
Java осень 2013 лекция 6
Technopark
JPoint 2016 - Etudes of DIY Java profiler
JPoint 2016 - Etudes of DIY Java profilerJPoint 2016 - Etudes of DIY Java profiler
JPoint 2016 - Etudes of DIY Java profiler
Anton Arhipov
Юнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, GoogleЮнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, Google
yaevents
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX ThreadsПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
Alexey Paznikov
20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov
Computer Science Club
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
Alexey Paznikov
Иван Пузыревский — Введение в асинхронное программирование
Иван Пузыревский — Введение в асинхронное программированиеИван Пузыревский — Введение в асинхронное программирование
Иван Пузыревский — Введение в асинхронное программирование
Yandex
Денис Колодин: Low-latency и soft-realtime на Python
Денис Колодин: Low-latency и soft-realtime на PythonДенис Колодин: Low-latency и soft-realtime на Python
Денис Колодин: Low-latency и soft-realtime на Python
it-people
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVM
Tech Talks @NSU
Как мы храним 75 млн пользователей (Денис Бирюков)
Как мы храним 75 млн пользователей  (Денис Бирюков)Как мы храним 75 млн пользователей  (Денис Бирюков)
Как мы храним 75 млн пользователей (Денис Бирюков)
Ontico
Распространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложений
Andrey Akinshin

разработка серверов и серверных приложений лекция №2