The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Введение в многопоточное программирование

15.01.2009 18:15

В статье представлено введение в многопоточное программирование, рассматривается использование POSIX-потоков в качестве замены вызову метода fork().

  1. Главная ссылка к новости (http://www.ibm.com/developerwo...)
Автор новости: IBM dW
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/19807-threads
Ключевые слова: threads, fork, gcc
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (10) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, pavlinux (ok), 22:18, 15/01/2009 [ответить]  
  • +/
    баянистый сайт!
     
     
  • 2.3, Damon (??), 09:41, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >баянистый сайт!

    Ну почему же? Встречал людей ( привыкших к Win32API ), для которых сама идея fork'ать процесс выглядит дико. Так что, просто и доступно. ИМХО.
    А вообще, fork, лично мне кажется проще многопоточности. И если, например, надо в час десяток клиентов обслужить и каждому, скажем, 100 байт передать, то самое оно, смысла не имеет городить что-то с многопоточностью.

     
     
  • 3.6, _umka_ (ok), 12:40, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    для таких задач правиный FSM позволит вобще все сделать в одном процессе :)
     
     
  • 4.8, Damon (??), 13:16, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >для таких задач правиный FSM позволит вобще все сделать в одном процессе :)

    Кстати, да. Буду знать. :-)

     
     
  • 5.10, _umka_ (ok), 17:27, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Альтернатива
    1) создали listen socket
    2) создали shm, положили туда семафор
    3) нафоркали сколько надо чилдов - в каждом fsm и trylock на семафоре вокруг этого сокета.
    схема маштабируется как угодно
    долго обрабатывается операция внутри fsm - сделай еще чилдов и вперед :)
     
  • 3.9, Staff (??), 16:03, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Городят обычно с fork'ами и пайпами/shm. Если итоговые единицы исполнения имеют общие данные, однозначно потоки. Если можно форкнуться и забыть о дите пока то не сдохло, лучше fork(). В данном случае, как уже сказали, параллельность вообще не нужна.
     

  • 1.2, andr.mobi (??), 09:32, 16/01/2009 [ответить]  
  • +/
    > чем устаревший метод fork()

    Фразочка раскрывает недалёкость и некомпетентность автора.
    Правильно говорить "старый добрый форк()", который в ряде случаев действительно использовать неэффективно.

     
  • 1.4, pavlinux (ok), 09:59, 16/01/2009 [ответить]  
  • +/
    fork() нужон для exec_ов или для функций работающих с файлами.

    остальное треды, мьютексы, семафоры, атомарные, чё там ещё...  

     
     
  • 2.5, _umka_ (ok), 11:18, 16/01/2009 [^] [^^] [^^^] [ответить]  
  • +/
    и еще для кучи всего.
    Не забываем fork() это изолированое адресное пространство - а pthread shared.
    в результате ошибка в одном процессе не может повлиять на остальные, а в случае тредов - очень легко. да и локинг в случае тредов может быть далеко не тривильным.
     

  • 1.7, XoRe (ok), 13:13, 16/01/2009 [ответить]  
  • +/
    Можно сказать спасибо за статью.
    Тема очень актуальна в связи со сложностью реализации хорошего "распоточивания" с правильным разделением ресурсов между потоками.
    Например, файлы, сокеты и пайпы, доступны всем потокам.
    И т.д.
    Отсюда и нетривиальность решаемых задач.
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру