Вопрос по асинхроному программированию (pthread, socket)

Модератор: Модераторы разделов

__c0d0__
Сообщения: 6
ОС: slackware 12.0 / windows xp

Вопрос по асинхроному программированию

Сообщение __c0d0__ »

Всем доброго времени суток!
Подскажите кто в курсе подробности об асинхронном программировании потоков и сокетов.
Конкретно, как работать с phtread (pthread_create, pthread_exit и т.д.). А также асинхронное
программирование сокетов в Linux (уведомления, события, ожидание и т.д.).

Если можно, то как реализованы в ядре потоки, не через fork(), а именно через pthread_create. ;)
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Вопрос по асинхроному программированию

Сообщение serzh-z »

Гм, а в чём вопрос?
Спасибо сказали:
Serik
Сообщения: 149
ОС: SuSE Linux

Re: Вопрос по асинхроному программированию

Сообщение Serik »

На этом форуме в ветке "программирование" есть Программирование Unix Api.
Так же можно почитать Программирование для Linux. Профессиональный подход
Спасибо сказали:
Аватара пользователя
Folderx
Сообщения: 296
ОС: fedora, mandriva

Re: Вопрос по асинхроному программированию

Сообщение Folderx »

(__c0d0__) писал(а):Если можно, то как реализованы в ядре потоки, не через fork(),

В материале крутого программиста(Unix Api который) почти ничего нет, может это оттого что он для журнала эти статьи писал.

Где-то было написано что потоки и процессы похожи как две капли воды, и отличаются примерно также, различия в количестве ресурсов выделяемых для того и другого.

По собственному опыту написания небольших программ пришёл к выводу что потоки можно вообще не использовать ввиду того, что это обычные функции и все эти семафоры и прочее прочее прочее чисто для удобства(чтобы в собственной программе не запутаться ;) )
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: Вопрос по асинхроному программированию

Сообщение v04bvs »

Folderx писал(а):
22.11.2007 01:13
Где-то было написано что потоки и процессы похожи как две капли воды, и отличаются примерно также, различия в количестве ресурсов выделяемых для того и другого.

Это абсолютно разные вещи.

потоки можно вообще не использовать ввиду того, что это обычные функции

нет

и все эти семафоры и прочее прочее прочее чисто для удобства(чтобы в собственной программе не запутаться ;) )

нет
Спасибо сказали:
Аватара пользователя
Attila
Сообщения: 125
Статус: Тролль-Лѣсовичокъ
ОС: Свободная aka ArchLinux

Re: Вопрос по асинхроному программированию

Сообщение Attila »

http://www.advancedlinuxprogramming.com/ здесь очень просто, но достаточно подробно описывается создание многопоточных приложений, управление потоками и пр. __c0d0__, Можете скачать, например, только интересующие Вас главы.
Книга доступна под Open Publication License. Serik привёл сылку на перевод этой книги.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Вопрос по асинхроному программированию

Сообщение drBatty »

Folderx писал(а):
22.11.2007 01:13
По собственному опыту написания небольших программ пришёл к выводу что потоки можно вообще не использовать ввиду того, что это обычные функции и все эти семафоры и прочее прочее прочее чисто для удобства
А не ты ли написал windows? Она тоже обычно работает, 99.9%. И раз в месяц(если её юзать 24/7/365) падает. Это не удобство! Это реальное средство, чтоб тебя не посчитали *****(вырезано цензурой).
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Folderx
Сообщения: 296
ОС: fedora, mandriva

Re: Вопрос по асинхроному программированию

Сообщение Folderx »

(drBatty) писал(а):А не ты ли написал windows? Она тоже обычно работает, 99.9%.

windows не везде виснет, есть моменты где она не виснет, а я писал про приложения в которых нужна синхронность или асинхронность, по моему мнению лучше не юзать потоки в малых прогах, потому что всё это можно реализовать без них.

(v04bvs) писал(а):Это абсолютно разные вещи.

fork создаёт отдельный процесс, pthread_create создаёт отдельный процесс
для fork выделяется столько же ресурсов, сколько выделено для его родителя
для thread выделяется меньшее количество ресурсов, вроде даже часть ресурсов родителя

У меня инфа такая.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Вопрос по асинхроному программированию

Сообщение drBatty »

Folderx писал(а):
24.11.2007 00:30
(drBatty) писал(а):А не ты ли написал windows? Она тоже обычно работает, 99.9%.

windows не везде виснет, есть моменты где она не виснет, а я писал про приложения в которых нужна синхронность или асинхронность, по моему мнению лучше не юзать потоки в малых прогах, потому что всё это можно реализовать без них.

(грустно)лучше вообще никогда потоки/нити/процессы/семафоры и т.д. не юзать. И уж точно нельзя, когда "можно реализовать без них". Есть моменты, когда приложение начинает глючить, причём из-за кривой реализации многозадачности :(
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: Вопрос по асинхроному программированию

Сообщение v04bvs »

Folderx писал(а):
24.11.2007 00:30
(v04bvs) писал(а):Это абсолютно разные вещи.

fork создаёт отдельный процесс, pthread_create создаёт отдельный процесс
для fork выделяется столько же ресурсов, сколько выделено для его родителя
для thread выделяется меньшее количество ресурсов, вроде даже часть ресурсов родителя

У меня инфа такая.

Форк создаёт копию вызывающего процесса, копируя все его данные. А pthread_create создаёт новый поток исполнения, при этом все данные остаются общими. Конечно в чём то эти процессы похожи, но модель программирования абсолютно другая.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Вопрос по асинхроному программированию

Сообщение drBatty »

v04bvs писал(а):
24.11.2007 07:38
копируя все его данные
Ты учти, раздел называется програмирование для начинающих. Кто нибудь выделит памяти new, и решит, что fork() просто обязана выделить ещё столько же для дочки, да и ещё скопировать содержимое.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Folderx
Сообщения: 296
ОС: fedora, mandriva

Re: Вопрос по асинхроному программированию

Сообщение Folderx »

http://symmetrica.net/uploads/linapi/linapi7.pdf

Вот этот файл где про разницу fork и thread, но там конечно в общих чертах, там говорится что это одно и то же, типа thread частный случай fork только ресурсы по разному выделяются.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Вопрос по асинхроному программированию

Сообщение drBatty »

Вот здесь очень подробно описано, чем процессы отличаются. Автору можно верить, ведь в отзывах я не разу не встретил указаний на ошибки. Всем спорящим прочитать в обязательном порядке! Если для вас это будет совсем непонятно - не используйте fork(). И не пишите о многозадачности, разве что, прямо в Юмор.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: