Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / потоки в С под linux / 18 сообщений из 18, страница 1 из 1
09.07.2007, 10:55
    #34646711
PitBull
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки в С под linux
подскажите, возможно ли в linux создать поток и не ждать его конца, чтобы созданный поток выполнялся сам по себе? Или это надо реализовывать не через потоки а через fork -> exec ?
...
Рейтинг: 0 / 0
09.07.2007, 11:21
    #34646819
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки в С под linux
Например:

pthread_create(), pthread_join(), pthread_cancel().

clone().
...
Рейтинг: 0 / 0
09.07.2007, 11:33
    #34646852
PitBull
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки в С под linux
но ведь pthread_join() будет ждать окнчания потока, а мне надо что бы я вызвал поток, и он сам по себе отработал, не отвлекая основную программу
...
Рейтинг: 0 / 0
09.07.2007, 11:35
    #34646859
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки в С под linux
PitBullно ведь pthread_join() будет ждать окнчания потока, а мне надо что бы я вызвал поток, и он сам по себе отработал, не отвлекая основную программу

Он и будет жить, после того как ты его создашь. Но ты же когда будешь завершать программу, будешь останавливать поток?
...
Рейтинг: 0 / 0
09.07.2007, 11:37
    #34646863
PitBull
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки в С под linux
программу завершать не буду. А запуск отдельного потока может инициировать пользователь
...
Рейтинг: 0 / 0
09.07.2007, 11:37
    #34646864
Sandro_K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки в С под linux
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
...
Рейтинг: 0 / 0
09.07.2007, 11:40
    #34646874
PitBull
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки в С под linux
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
        int result;
	pthread_t	mthread;
	
	result = pthread_create(&mthread, NULL, thread_parsing, (void*) arg);
	if (result !=  0 ) {
		perror("Joining the first thread");
		return EXIT_FAILURE;
	}
	
	result = pthread_join(mthread, NULL);
	if (result !=  0 ) {
		perror("Joining the first thread");
		return EXIT_FAILURE;
	}

	printf("Done\n");	

вот здесь поток, который я вызываю, может выполняться неизвестное мне время(до 10 минут), и мне надо чтобы пользователь не ждал, пока этот поток завершиться, а работал дальше
...
Рейтинг: 0 / 0
09.07.2007, 11:48
    #34646899
PitBull
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки в С под linux
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
int result;
	pthread_t	mthread;
	pthread_attr_t	tattr;
	
	result = pthread_attr_init(&tattr);
	result = pthread_attr_setdetachstate(&tattr,PTHREAD_CREATE_DETACHED);
	
	result = pthread_create(&mthread, &tattr, thread_parsing, (void*) arg);
	if (result !=  0 ) {
		perror("joining the dblogging thread");
		return EXIT_FAILURE;
	}

может ещё подскажешь, в чём ту проблема? есть метод thread_parsing, но он почему то не отрабатывает, как будто мимо проходит
...
Рейтинг: 0 / 0
09.07.2007, 12:22
    #34647059
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки в С под linux
PitBullпрограмму завершать не буду. А запуск отдельного потока может инициировать пользователь

Никогда?
...
Рейтинг: 0 / 0
09.07.2007, 12:24
    #34647066
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки в С под linux
PitBull
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
int result;
	pthread_t	mthread;
	pthread_attr_t	tattr;
	
	result = pthread_attr_init(&tattr);
	result = pthread_attr_setdetachstate(&tattr,PTHREAD_CREATE_DETACHED);
	
	result = pthread_create(&mthread, &tattr, thread_parsing, (void*) arg);
	if (result !=  0 ) {
		perror("joining the dblogging thread");
		return EXIT_FAILURE;
	}

может ещё подскажешь, в чём ту проблема? есть метод thread_parsing, но он почему то не отрабатывает, как будто мимо проходит

Поток существует, пока существует программа. Если из main() вышел, поток умрет.
...
Рейтинг: 0 / 0
09.07.2007, 12:39
    #34647132
PitBull
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки в С под linux
т.е. невозможно сделать так, чтобы поток был запущен в ходе работы программы, отработал и завершился?
...
Рейтинг: 0 / 0
09.07.2007, 12:40
    #34647135
PitBull
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки в С под linux
Akh PitBullпрограмму завершать не буду. А запуск отдельного потока может инициировать пользователь

Никогда?

Программа может работать месяцами, не выключаясь
...
Рейтинг: 0 / 0
09.07.2007, 13:04
    #34647259
PitBull
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки в С под linux
Akh PitBull
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
int result;
	pthread_t	mthread;
	pthread_attr_t	tattr;
	
	result = pthread_attr_init(&tattr);
	result = pthread_attr_setdetachstate(&tattr,PTHREAD_CREATE_DETACHED);
	
	result = pthread_create(&mthread, &tattr, thread_parsing, (void*) arg);
	if (result !=  0 ) {
		perror("joining the dblogging thread");
		return EXIT_FAILURE;
	}

может ещё подскажешь, в чём ту проблема? есть метод thread_parsing, но он почему то не отрабатывает, как будто мимо проходит

Поток существует, пока существует программа. Если из main() вышел, поток умрет.

Я правильно тебя понял, что моя тестовая программа заканчивается раньше чем выполнится поток и поэтому поток умирает? Я думал что pthread_create - сразу запускает поток
...
Рейтинг: 0 / 0
09.07.2007, 13:13
    #34647299
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки в С под linux
PitBullЯ правильно тебя понял, что моя тестовая программа заканчивается раньше чем выполнится поток и поэтому поток умирает? Я думал что pthread_create - сразу запускает поток

Почти. Я не сказал, что это так. Необходимо об этом позаботиться.
...
Рейтинг: 0 / 0
09.07.2007, 13:14
    #34647301
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки в С под linux
PitBull Akh PitBullпрограмму завершать не буду. А запуск отдельного потока может инициировать пользователь

Никогда?

Программа может работать месяцами, не выключаясь

Ну, а освобождать ресурсы кто будет?
...
Рейтинг: 0 / 0
09.07.2007, 14:20
    #34647602
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки в С под linux
PitBull пишет:
> Автор: "PitBull"
> но ведь pthread_join() будет ждать окнчания потока, а мне надо что бы я

Будет. Ну значит не вызывай pthread_join()
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
09.07.2007, 14:56
    #34647738
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки в С под linux
PitBull wrote:

> т.е. невозможно сделать так, чтобы поток был запущен в ходе работы
> программы, отработал и завершился?
Этим, часом, не pthread_detach занимается?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
11.07.2007, 00:44
    #34651989
ЁлкаЁ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки в С под linux
system("blablabla &");

не будет ожидать окончания работы шел, т.к. &
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / потоки в С под linux / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]