Здравствуйте, подскажите пожалуйста, как заставить 1ю и 2ю функцию выполняться одновременно, а третью ждать пока они обе выполняться? Заранее спасибо. Вот код, но на третье
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
#include <stdio.h>
#include <thread>
#include <string>
#include <vector>
#include <mutex>
#include <future>
#include <conio.h>
using namespace std;
mutex g_lock;
mutex c_lock;
void anyFunc1(mutex& mtx) {
mtx.lock();
for (int i = 0; i < 10; i++) {
Sleep(400);
cout << "1 \n";
}
}
void anyFunc2(mutex& mtx) {
for (int i = 0; i < 10; i++) {
Sleep(400);
cout << "2 \n";
}
mtx.unlock();
}
void anyFunc3(mutex& mtx) {
mtx.lock();
for (int i = 0; i < 10; i++) {
Sleep(400);
cout << "3 \n";
}
mtx.unlock();
}
int main() {
mutex mtx;
setlocale(LC_ALL, "rus");
thread func_thread1(anyFunc1, ref(mtx));
thread func_thread2(anyFunc2, ref(mtx));
thread func_thread3(anyFunc3, ref(mtx));
func_thread1.join();
func_thread2.join();
func_thread3.join();
system("pause");
return 0;
}
Ожидание выполнения потока делается через join. Мьютекс для этой задачи не нужен. Как и лишние два потока.
thread func_thread1(anyFunc1);
anyFunc2();
func_thread1.join();
anyFunc3();
Сборка персонального компьютера от Artline: умный выбор для современных пользователей