Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Как купить рекламу на форуме


Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

Купить рекламу на форуме 20000 рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.09.2012, 23:35   #1
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию С++ многопоточность

Банальный код многопоточности (я надеюсь что эт многопоточность,вроде проверял)

Код:
int Array[100000];

unsigned int __stdcall Test(LPVOID Param)
{
	for(int i = 1; i < 100000; i+=2)
		Array[i] = i;
	return 0;
}
int main()
{
	_beginthreadex(nullptr,0,Test,nullptr,0,nullptr);
	for(int i = 0; i < 100000; i+=2)
		Array[i] = i;
	return 0;
}
Обычный код:

Код:

int Array[100000];
int main()
{
	for(int i = 0; i < 100000; i++)
		Array[i] = i;
	return 0;
}
На сколько (примерно) первый код быстрее второго. Я думаю в 2 раза т.к. обе функции выполняются одновременно и заполняют массив одновременно, пока main заполняет элемент Array[0], то функция Test заполняет в это время Array[1]. Надеюсь я правильно понял, если что направьте в правильную сторону.

Да и посоветуйте если не сложно, когда эффективнее всего применять многопоточность.

З.Ы. Можно ли узнать программно поддерживает ли ОС многопоточность, если да то как
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.

Последний раз редактировалось kineziz; 09.09.2012 в 23:38.
kineziz вне форума Ответить с цитированием
Старый 10.09.2012, 05:50   #2
Kukurudza
Форумчанин
 
Регистрация: 02.06.2011
Сообщений: 282
По умолчанию

такие плюшки (типа куча абсолютно одинаковых операций с матрицами векторами и пр) лучше параллелить на openMP, там же есть и функции, которые говорят сколько потоков можно юзать. тут на первый взгляд да, в 2 раза быстрее, но на практике возможно даже хуже, ибо ты заполняешь массив через элемент. лучше не через один а первые 50000 элементов первый поток, вторые 50000 элементов второй поток. а из личного небольшого опыта так скажу, необходимости в паралелке для академических задач в 99.99% случаев нет, если ты конечно не фанат.
Kukurudza вне форума Ответить с цитированием
Старый 10.09.2012, 22:26   #3
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Походу ты знаешь академические задачки)))) Можешь если не трудно сюда или в личку парочку покидать
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Старый 11.09.2012, 12:20   #4
rlib
Форумчанин
 
Аватар для rlib
 
Регистрация: 22.05.2012
Сообщений: 352
По умолчанию

Цитата:
Сообщение от kineziz Посмотреть сообщение
Надеюсь я правильно понял, если что направьте в правильную сторону.
OpenMP.
http://www.openmp.org/mp-documents/OpenMP3.1.pdf

Поддерживается всеми современными компиляторами фортрана и Ц.
Более того, опция автопарализации наличествует также, что может решить вам распаралеливание циклов вообще без понимания и знаний протоколов.
rlib вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многопоточность в C Ryabinin313 Общие вопросы C/C++ 2 30.10.2011 17:02
Многопоточность. Просветленный Общие вопросы Delphi 7 15.10.2011 14:44
многопоточность MasterSporta Общие вопросы C/C++ 4 30.09.2011 12:27
Многопоточность WennY Общие вопросы Delphi 11 22.04.2011 23:46
Многопоточность CrazyDude Общие вопросы Delphi 1 18.04.2010 18:00


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS