Многопоточность в Си?
- Victor Gr.
- Неотъемлемая часть форума
- Сообщения: 891
- Зарегистрирован: 13 авг 2004, 15:39
- Откуда: Минск
- Контактная информация:
Многопоточность в Си?
Возможно ли в Си использовать многопоточность?
К примеру, для того, чтобы разбросать потоки на разные процессоры или заниматься разными потоками - разными делами.
К примеру, для того, чтобы разбросать потоки на разные процессоры или заниматься разными потоками - разными делами.
ГМ, ИМХО вопрос задан категорически неправильно. Мое дилетантское мнение состоит в том, что язык програмирования C не знает ничего про потоки, процессы, io и т.п. прелести жизни ОС... Все это делается стандартными библиотеками...
PS: В вашем случае - начните курить маны скажем с pthread_create
PPS: А еще лучше - почитать что-нить толковое по програамиированию сабж - кажется у Стивенса (могу ошибаться) таки это описано в относительно общем виде, а детали линуксячьей реализации надо искать в более других источниках.
PS: В вашем случае - начните курить маны скажем с pthread_create
PPS: А еще лучше - почитать что-нить толковое по програамиированию сабж - кажется у Стивенса (могу ошибаться) таки это описано в относительно общем виде, а детали линуксячьей реализации надо искать в более других источниках.
Опыт растет прямо пропорционально выведенному из строя оборудованию
вопрос сформулирован действительно некорректно.
Стивенса читать на этом уровне понимания - бесполезно. К тому же то что выходило на русском (двухтомник Network Programming) про потоки содержит маленькую малоинформативную главу.
http://www.opennet.ru/docs/137.shtml - начните отсюда
http://www.opengroup.org/onlinepubs/000095399/toc.htm - справочная информация
Стивенса читать на этом уровне понимания - бесполезно. К тому же то что выходило на русском (двухтомник Network Programming) про потоки содержит маленькую малоинформативную главу.
http://www.opennet.ru/docs/137.shtml - начните отсюда
http://www.opengroup.org/onlinepubs/000095399/toc.htm - справочная информация
И увидел я зверя, выходящего из тундры. И число его было 3.14159265358979324...
- Victor Gr.
- Неотъемлемая часть форума
- Сообщения: 891
- Зарегистрирован: 13 авг 2004, 15:39
- Откуда: Минск
- Контактная информация:
Возможно и некорректно, т.к. Си я знаю только после Perl и PHP . Только вчера купил Кернигана Ритчи "Язык программирования Си".
Но вопрос собственно откуда: когда листал книгу по Java - помню, одна из первых глав была посвящена программированию многопоточного приложения.
Serj, Выходит, ОС должна распараллеливать задачу?
Но вопрос собственно откуда: когда листал книгу по Java - помню, одна из первых глав была посвящена программированию многопоточного приложения.
Serj, Выходит, ОС должна распараллеливать задачу?
- Serj
- Неотъемлемая часть форума
- Сообщения: 320
- Зарегистрирован: 26 июн 2004, 13:48
- Откуда: Беларусь, Минск
Не, ну при решении конкретной задачи естественно ты сам выбираешь будет ли задача решаться в одном потоке/процессе или же будут запускаться на выполнение дополнительные потоки/процессы решающие какие-то части задачи одновременно (параллельно).Serj, Выходит, ОС должна распараллеливать задачу?
А вот уже инструменты для создания, управления, синхронизации и обмена данными друг с другом предоставляет операционная система (если конечно ОС многозадачная).
Программист - это человек, который сначала долго думает, чтобы потом ничего не делать.
- Victor Gr.
- Неотъемлемая часть форума
- Сообщения: 891
- Зарегистрирован: 13 авг 2004, 15:39
- Откуда: Минск
- Контактная информация:
Я это к тому, что с теперешним замедлением развития процессоров ввысь (наращивания тактовой частоты) и интенсивным развитием вширь (появление двухядерности, двухпроцессорности, Hyper-Threading, двухпроцессоро-двухядерности) нужно думать о конструировании программ с учётом этого.
Роадмапы Intel и AMD однозначно дают понять то, что в будущем никакого намёка даже на одноядерность не будет.
Т.к. ОС трудно самой распараллелить задачу, нужно будет ей помогать.
Роадмапы Intel и AMD однозначно дают понять то, что в будущем никакого намёка даже на одноядерность не будет.
Т.к. ОС трудно самой распараллелить задачу, нужно будет ей помогать.
Т.к. ОС трудно самой распараллелить задачу, нужно будет ей помогать.
Поясни мне глубокомысленность этого утверждения?
Смею предположить что просто версии gcc для многоядерных процев должны включать ключ (оптимизировать для SMP). И ОС будет очень легко распараллеливать задачи.
И само SMP для линуха явление не новое...
Поясни мне глубокомысленность этого утверждения?
Смею предположить что просто версии gcc для многоядерных процев должны включать ключ (оптимизировать для SMP). И ОС будет очень легко распараллеливать задачи.
И само SMP для линуха явление не новое...
I'll kill this code without a knife -- with only fork().
Victor Gr., ОС сама и не умеет распараллеливать задачу - это не ее дело, максимум могут каким-то образом распараллеливаться системные функции, но вот уж ваш код - извольте распараллелить сами. Самое трудное - не техническая реализация параллелизма, а маштабирование алгоритма на N испольнительных устройств, причем N может быть заренее не изветно. И рспараллеливание имеет смысл и на однопроцессорных устройствах - т.к. хватает медленных опреаций - тот же io...
Опыт растет прямо пропорционально выведенному из строя оборудованию
- Victor Gr.
- Неотъемлемая часть форума
- Сообщения: 891
- Зарегистрирован: 13 авг 2004, 15:39
- Откуда: Минск
- Контактная информация: