параллельность + синхронизации (примеры)
Добавлено: 28 июл 2012, 12:48
Вопрос скорости выполнения (прироста скорости) при выполнении в несколько параллельных ветвей, или при отсутствии параллельности. При разных альтернативных способах написания одного и того же функционально кода.
(вопрос, как видно из формулировки, чисто программистский, и не программистам не актуальный )
Я давно натыкаюсь на такой вопрос ... ещё со времён издания книжки (http://www.books.ru/books/qnxunix-anato ... 04/?show=1):
Сейчас этот вопрос (отчасти и непроизвольно) выплыл в обсуждениях форума Debian: Несколько потоков в одной функции, ... но там он звучит частно и неинтересно, а вообще вопрос такой (для меня):
- насколько можно ожидать ускорение от параллельного исполнения кода?
- какие факторы на это влияют, а какие нет? (число процессоров, кэширование RAM, ...)
- как обезопасить использование потоково небезопасных (not thread-safe) функций (а таких в POSIX библиотеке C достаточно много) примитивами синхронизации?
- как способ синхронизации будет влиять на ускорение?
Но меня эти вопросы интересуют исключительно на удачных примерах кода.
Которые можно запустить и проверить...
А удачные примеры не всегда легко найти или составить.
(вопрос, как видно из формулировки, чисто программистский, и не программистам не актуальный )
Я давно натыкаюсь на такой вопрос ... ещё со времён издания книжки (http://www.books.ru/books/qnxunix-anato ... 04/?show=1):
Сейчас этот вопрос (отчасти и непроизвольно) выплыл в обсуждениях форума Debian: Несколько потоков в одной функции, ... но там он звучит частно и неинтересно, а вообще вопрос такой (для меня):
- насколько можно ожидать ускорение от параллельного исполнения кода?
- какие факторы на это влияют, а какие нет? (число процессоров, кэширование RAM, ...)
- как обезопасить использование потоково небезопасных (not thread-safe) функций (а таких в POSIX библиотеке C достаточно много) примитивами синхронизации?
- как способ синхронизации будет влиять на ускорение?
Но меня эти вопросы интересуют исключительно на удачных примерах кода.
Которые можно запустить и проверить...
А удачные примеры не всегда легко найти или составить.