Как общаться между потоками и эквивалентными для Waitforsingleobject ()

Я только начинаю C ++ в школе, и я пытаюсь сделать и Linux и Windows.
Так вот мой код и упражнение. Дело в том, что я понятия не имею, как определить время запуска потока, и всякий раз, когда я запускаю его, я не получаю правильный символ.

#include <iostream>
#include <cstdlib>
#include <pthread.h>using namespace std;
bool t;

#define NUM_THREADS  3

void *Saisie(void *PT)
{
char TT[150];
cout << "Entrez une chaîne de caractères :" <<endl;
cin >> TT;
t = true;
pthread_exit(NULL);
}

void *Visualisation(void *PT)
{
cout<<"La chaine transmise est :" <<  &*(char*)PT <<endl;
pthread_exit(NULL);
}

int main ()
{
pthread_t TH1;
pthread_t TH2;
char TT[150];
t = false;

while (t == false){
pthread_create(&TH1,NULL,Saisie,&TT);  // Création du thread TH1
pthread_join(TH1,NULL);
}
if (t == true){
pthread_create(&TH2,NULL,Visualisation,&TT);  // Création du thread TH2
pthread_join(TH2,NULL);
}

cout << "\nFin du programme – saisir une lettre pour fermer\n";
cin >> TT;
}

И мой вывод следующий:

Entrez une chaîne de caractères: тест
La Chaine Transmise Est: \ 250 \ 365 \ 277 \ 357 \ 376

Большое спасибо!

0

Решение

синхронизируйте ваши потоки и используйте библиотеку, предусмотренную стандартом C ++. Таким образом, ваш код переносим.

Использование библиотеки pthread не более желательно, чем указанная выше опция. Существует реализация pthread для Windows, но зачем переходить к этой проблеме, когда вы можете написать только один раз, используя то, что обеспечивает стандарт C ++.

Чтобы ответить на ваш конкретный запрос, вы можете использовать спать примитив или если вам нужно подождать при условии, то используйте переменные условия

Взглянуть Вот

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]