The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Как организовать пул потоков?"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Как организовать пул потоков?" 
Сообщение от Andrey emailИскать по авторуВ закладки(??) on 03-Июл-05, 13:58  (MSK)
Привет всем. Вот возник вопрос -- как организовать пул потоков в линукс/бсд.
Пошарился по инету. Нашёл про QNX. http://www.hostmake.ru/articles/c/c3.php
очень интересная статья, ИМХО. Только вот то что мне нужно в QNX делаеться одним-двумя вызовами библиотечных функций.

Так вот. Имеет ли кто подобный опыт? Мне бы примерчик простенький... любые ссылки на статьи приветствуются.

Или может есть библиотека подобная той, которая реализует вызов в QNX?

Буду благодарен за любую помощь. Спасибо.

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Как организовать пул потоков?" 
Сообщение от Lazarenko emailИскать по авторуВ закладки on 03-Июл-05, 16:47  (MSK)
>Привет всем. Вот возник вопрос -- как организовать пул потоков в линукс/бсд.
>
>Пошарился по инету. Нашёл про QNX. http://www.hostmake.ru/articles/c/c3.php
>очень интересная статья, ИМХО. Только вот то что мне нужно в QNX
>делаеться одним-двумя вызовами библиотечных функций.
>
>Так вот. Имеет ли кто подобный опыт? Мне бы примерчик простенький... любые
>ссылки на статьи приветствуются.
>
>Или может есть библиотека подобная той, которая реализует вызов в QNX?
>
>Буду благодарен за любую помощь. Спасибо.

Сам понял, что спросил?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Как организовать пул потоков?" 
Сообщение от Andrey emailИскать по авторуВ закладки(??) on 03-Июл-05, 16:53  (MSK)
>Сам понял, что спросил?

Прочитал ещё раз). Вроде всё правильно, только надо добавить "на языке си".
Что именно непонятно?
Может я чего-то недопонимаю?
Нужно, чтобы в приложении при вызове функции myfunct() запускался(брался) поток из пула, в котором(потоке) выполнялась бы эта функция. Если в пуле потоков недостаточно, поток должен создаваться и помещаться в пул. Контроль максимального числа потоков (в смысле чтобы количество потоков не превышало n) не обязателен, хотя желателен.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Как организовать пул потоков?" 
Сообщение от Maxim Kuznetsov Искать по авторуВ закладки on 04-Июл-05, 14:15  (MSK)
если не надо в myfunc() передавать агрументы, то элементарно просто :

/* pool protection and signals */
pthread_mutex_t pool_mutex=PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t pool_cond=PTHREAD_COND_INITIALIZER;
void *myfunc_thread(void *) {
  while(1) {
    pthread_mutex_lock(&pool_mutex);
    pthread_cond_wait(&pool_cond,&pool_mutex);
    // code placed here
    //
    pthread_mutex_unlock(&pool_mutex);
  }
}
/* create pool */
for(int i=0;i<POOL_SIZE;i++) {
  pthread_t tid;
  if (pthread_create(&tid,NULL,myfunc_thread,NULL)<0)
     exit(1);
}
//////
/* sample - call function from pool */
pthread_signal(&pool_cond);

p.s.: если надо передавать аругменты - то чуть сложнее и будет не быстрее чем просто pthread_create.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Как организовать пул потоков?" 
Сообщение от Maxim Kuznetsov Искать по авторуВ закладки on 04-Июл-05, 14:18  (MSK)
реентерабельный код можно (и нужно) помещать после pthread_mutex_unlock
функции myfunc_thread.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Как организовать пул потоков?" 
Сообщение от Andrey emailИскать по авторуВ закладки(??) on 06-Июл-05, 09:49  (MSK)
Ок. Спасибо. Пример понятен. Как раз то, что нужно.
Нет ли линков на тему, почитать, просветиться?
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




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

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