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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2012, 00: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; 10.09.2012 в 00:38.
kineziz вне форума Ответить с цитированием
Старый 10.09.2012, 06:50   #2
Kukurudza
Форумчанин
 
Регистрация: 02.06.2011
Сообщений: 282
По умолчанию

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

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

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

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


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

Опции темы Поиск в этой теме
Поиск в этой теме:

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


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