Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Нарушитель
1490 / 1291 / 486
Регистрация: 16.08.2014
Сообщений: 5,420
Записей в блоге: 1
1

Thread

15.04.2017, 15:09. Показов 534. Ответов 2
Метки нет (Все метки)

Доброго времени суток господа! Вопрос в коде в комментариях.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <thread>
 
enum { DELAY = 5 };
bool mutex = false;
 
void TestFunction()
{
  mutex = true;
 
  std::cout << "enter "TestFunction()"" << std::endl;             // Почему этот std::endl не по очереди в консоль вываливается
  std::this_thread::sleep_for(std::chrono::seconds(DELAY) );     // как сделать что бы он шел по порядку.
  std::cout << "exit "TestFunction()"" << std::endl;
 
  mutex = false;
}
 
int main(int argc, char* argv[] )
{
  std::thread thread(&TestFunction);
  thread.detach();
 
  std::cout << "in "main(int argc, char* argv[] )"" << std::endl;
 
  while (mutex)
    std::this_thread::sleep_for(std::chrono::seconds(1) );
 
  return 0;
}
Добавлено через 8 минут
нужны некие барьеры памяти?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.04.2017, 15:09
Ответы с готовыми решениями:

Ошибка компиляции "no instance of constructor 'std::thread::thread' matches the argument list"
Не могу сообразить почему возникает ошибка. У меня в классе есть метод, который должен работать в...

Boost::thread vs std::thread
Доброго времени суток, решил углубить свои знания, и решил почитать про потоки, бустовые и те что в...

C++11. thread, mutex, thread-safety
есть функция, которая стартует 2 потока: для отлова нажатия клавиш и для выполнения действий void...

Thread
#include &lt;iostream&gt; #include &lt;thread&gt; using namespace std; void task1(){ cout &lt;&lt; &quot;task1&quot;; }...

2
2723 / 1887 / 559
Регистрация: 05.06.2014
Сообщений: 5,499
15.04.2017, 15:18 2
1) С чего вы взяли что 25 строка будет выполнена после девятой?
2) С чего вы взяли что 23 строка будет выполнена после одиннадцатой?
В обоих случаях никакой синхронности между TestFunction и main никто не обещал.
0
nd2
3417 / 2797 / 1251
Регистрация: 29.01.2016
Сообщений: 9,426
15.04.2017, 18:55 3
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>
 
using namespace std;
 
enum { DELAY = 5 };
bool f = false;
mutex mut;
condition_variable cv;
 
void TestFunction()
{
  std::lock_guard<std::mutex> m(mut);
  std::cout << "enter TestFunction()" << std::endl;             // Почему этот std::endl не по очереди в консоль вываливается
  std::this_thread::sleep_for(std::chrono::seconds(DELAY) );     // как сделать что бы он шел по порядку.
  std::cout << "exit TestFunction()" << std::endl;
 
  f = true;
  cv.notify_one();
}
 
 
int main()
{
    std::thread thread(&TestFunction);
    thread.detach();
 
    mut.lock();
    std::cout << "in main(int argc, char* argv[])" << std::endl;
    mut.unlock();
 
    unique_lock <mutex> lk(mut);
    cv.wait(lk, [] () {return f;});
    lk.unlock();
 
    return 0;
}
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.04.2017, 18:55

std::thread
Возник вопрос: как создать массив потоков (точнее, как его инициализировать). То есть, мне нужно...

Thread class
В библиотеке SDL есть функция: SDL_Thread *SDL_CreateThread(int (*fn)(void *), void *data); Эта...

Thread в объекте
Добрый вечер, вопрос следующий: Создать класс, реализующий функционал создания/остановки нити...

thread-safe ли?
Насколько я понимаю, для х32 процессоров атомарными операциями не являются те, что с double/long...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.