LINUX.ORG.RU

phreads


0

0

как создать тред с одним условием, чтобы список дескрипторов был не общий, а для каждого треда свой. ну очень не хочится связываться с __clone(). Зачем все это нужно: есть сервер написанный на тредах, но он может обрабатывать не более 1024 соединений единовременно. перекомпилировать ядро чтобы увеличить кол-во дескрипторов на процесс нельзя, это обусловлено требованиями стороннего ПО (там какие то свои ограничения и при перекомпиляции ядра отказывается работать). Так вот нужно создать тред со всеми стандартными возможностями доступа к общей памяти, но несколько "начальных" (назову их так) тредов нужно создать так, чтобы список дескрипторов был собственный для каждого треда, а потом эти начальные треды буду плодить потоки простым pthread_create, что даст возможность держать количество открытых соединений = 1024*кол-во начальных тредов. на клонах пытался написать, потоки создаются, но потом выдают SIGSEGV, при чем каждый раз в новом месте, и отследить ошибку не могу. нужно как-то организовывать ожидание завершения потомков и чистить за ними стэк, а как пока не придумывается. подскажите как можно это реализовать или поделитесь ссылки на литературу и документацию

anonymous

Ответ на: комментарий от anonymous

fork вообще не то. у меня куча глобальных массивов висят, и каждый тред должен периодически взаимодействовать с этими массивами. pipe + fork или подобные связки здесь не подойдут, производительность падает.

anonymous
()
Ответ на: комментарий от anonymous

У меня такая же проблема была. Возился целый месяц, реализовал нечто огромное, навороченое и ужасное, почти заново треды реализовать пришлось (само создание потока)
Потом плюнул на все и стал пользоваться fork и стандартным средством ipc - mmap.
Так что вот тебе совет:
1) MAN 2 fork
2) MAN 2 mmap
Еще можешь про семафоры и мьютексы почитать.

OxiD ★★★★
()
Ответ на: комментарий от OxiD

> 1) MAN 2 fork > 2) MAN 2 mmap

- хороший совет. С независимым вводом-выводом в тредах лучше не связываться совсем, это классическая бага или, если угодно, фича.

anonymous
()
Ответ на: комментарий от anonymous

ок. буду пробывать fork. но вместо mmap , буду юзать shmget+semget, думается это побыстрее будет работать чем mmap. лишь бы производительность в целом не упала по сравнению с тредами

anonymous
()
Ответ на: комментарий от anonymous

>буду юзать shmget+semget, думается это побыстрее будет работать чем mmap

по опыту как раз наоборот (см. MAP_ANONYNOUS)

sS ★★★★★
()
Ответ на: комментарий от sS

ясно, с опытом спорить не стоит, возьмусь за mmap. только ни о какой графической библиотеке речи не было. или я что-то не так понял?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.