Можно ли выполнять разные участки кода одной функции в разных потоках? Например:
#include <iostream>
#include <thread>
void make(){
some code //Выполнить в потоке a
some code 2 // Выполнить в потоке b
}
int main(){
thread a(make);
thread b(make);
some code 3;
}
Без проблем, стоит только передать в процедуру какой-то идентификатор, позволяющий определить, какой из кусков следует выполнять в данном потоке:
#include <iostream>
#include <thread>
void make(char const code_id)
{
switch(code_id)
{
case 'a':
{
// some code
}
break;
case 'b':
{
// some code 2
}
break;
default:
{
// do nothing...
}
break;
}
}
int main()
{
::std::thread a(&::make, 'a');
::std::thread b(&::make, 'b');
a.join();
b.join();
return 0;
}
online compiler
Именно так, как вы пишете - нет.
Нечто подобное позволяет OpenMP - например, распараллелить цикл, но это не совсем C++, это расширение все же...
Но! никто не мешает сделать так: разбить make()
на две функции, вроде
void make()
{
first();
second();
}
и уже их выполнить параллельно.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Функция check() почему-то не работает, при вводе "Start" она все равно выводит сообщение о том, что "Команда введена не верно!" Не могу понять, где...
Не судите строго, ошибка в какой-то мелочи наверноеЕсть view
Вот мой код! Приложение запоминает имя и статус чтобы показать их оффлайн но как мне сохранить изображение чтобы показать их оффлайнЗаранее...