Форум программистов, компьютерный форум CyberForum.ru

многопоточность, подскажите как. - C++

Восстановить пароль Регистрация
 
G1yyk
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 9
06.02.2011, 12:44     многопоточность, подскажите как. #1
Добрый день.

Подскажите как сделать многопоточное приложение с общим участком памяти(будет массив с данными).

Читаю про многопооточность и зашел в тупик, на сколько я понял - threads это копии родителя с общей памятью, fork это копии родителя с разделённой памятью. То есть многопоточность будет только с функционалом родительского процесса?


А как сделать, что программа делилась на два потока с разным функционалом и с общим участком памяти. Что бы один поток читал и писал в БД, а другой поток пораждал еще кучу потоков(уже с общим функционалом) и все потоки могли бы обращаться к общему массиву?

1 - основной поток для клиентов, 2 основной поток для БД, @ общий массив. 3-8 это потомки основхных процессов 1 и 2

.................@
......._____|_____
.......|.......................|
.......1.....................2
...__|__.............__|__
...|....|....|............|....|....|
..3...4...5..........6....7...8
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2011, 12:44     многопоточность, подскажите как.
Посмотрите здесь:

C++ Как создать многопоточность
C++ Многопоточность
C++ Многопоточность
C++ Как реализовать многопоточность в консольном приложении С++
Многопоточность C++
Многопоточность в С++ C++
C++ Как реализовать многопоточность?
Как правильно реализовывается многопоточность C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
slavich
12 / 12 / 1
Регистрация: 25.10.2009
Сообщений: 32
06.02.2011, 13:06     многопоточность, подскажите как. #2
Классический пример создания процесса:
C
1
2
3
4
5
6
pid = fork(); 
switch( pid ) { 
 -1:; // Ошибка 
0:;  // Дочерний процесс 
default:;  // Родительский процесс 
}
Создание потока:
C
1
int pthread_create(pthread_t *thread, pthread_attr_t *attr, void * (*start_routine)(void *), void *arg);
Для общего участка памяти используй функции:
C
1
2
3
#include <sys/shm.h> 
 int shmget(key_t key, size_t size, int flag); 
void *shmat(int shmid, const void *addr, int flag);
G1yyk
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 9
06.02.2011, 13:47  [ТС]     многопоточность, подскажите как. #3
Наверное понял.

В создании нити указываю процедуру для фхода и все благополучно разделяется один поток вуыполяняет процедуру соденения с БД, а в другой поток плодить еще нити для подключения клиентов.
Yandex
Объявления
06.02.2011, 13:47     многопоточность, подскажите как.
Ответ Создать тему
Опции темы

Текущее время: 10:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru