Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2009, 12:12   #1
Prestigio
Пользователь
 
Регистрация: 21.01.2008
Сообщений: 10
Вопрос linux. pthreads.

нужно создать много нитей. Не хочет создавать более 382 потоков. на 383ем возвращает 12 = ENOMEM = out of memory
Проблемма: нужно создать значительно большее кол-во потоков.
Вопрос: out of какой memory. RAM ещё хватает с головой.

gcc-4.2.4
linux-2.6.27.8

запускал на разных машинах и разных дистрибутивах. Везде одна и та же ошибка на одном и том же потоке

Код:
#include <iostream>
#include <pthread.h>
#define threads 1000
void* some_func(void* arg)
{
	std::cout<<"i'm thread #"<<(int)arg<<"\n";
	pthread_exit(NULL);
}
int main()
{
	int thread_error;
	int args[threads];
	for (int i=0;i<threads;i++)
		{args[i]=i;}
	for (int thread_num=0; thread_num<threads; thread_num++)
	{
		pthread_t thread_id;
		std::cout<<"begin to create thread #"<<thread_num<<"\n";
		thread_error=pthread_create(&thread_id, NULL, some_func,(void*)args[thread_num]);

		if (thread_error!=0)
			{std::cout<<"error #"<<thread_error<<"\n";}
	}
}
Prestigio вне форума Ответить с цитированием
Старый 10.06.2009, 14:53   #2
4ag
Новичок
Джуниор
 
Регистрация: 10.06.2009
Сообщений: 1
По умолчанию

Возможно, система просто исчерпала возможность создавать новые потоки (процессы) так как привышено их максимальное количество.
Посмотреть соответствующий лимит в gentoo можно здесь: /etc/security/limits.conf. Про другие дистрибутивы не знаю
4ag вне форума Ответить с цитированием
Старый 01.09.2009, 14:37   #3
nxt
Новичок
Джуниор
 
Регистрация: 01.09.2009
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Prestigio Посмотреть сообщение
нужно создать много нитей. Не хочет создавать более 382 потоков. на 383ем возвращает 12 = ENOMEM = out of memory
Проблемма: нужно создать значительно большее кол-во потоков.
попробуй создавать потоки с атрибутом detached
nxt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ос из linux ben95 Свободное общение 8 18.02.2009 05:43
Linux XP ? mihali4 Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 10 23.12.2008 14:22
идел в интернете статьи, что линукс ускоряет выход из строя винчестера на ноутбуке sergei64_89 Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 11 08.12.2008 04:17
Linux на VMware....... WinXP <-> Linux DMUTPUU Операционные системы общие вопросы 1 24.09.2008 12:03
Linux MAcK Операционные системы общие вопросы 3 26.10.2007 11:03