Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Падаван С++
 Аватар для obivan
447 / 261 / 89
Регистрация: 11.11.2014
Сообщений: 916

Как отделить поток с помощью detach?

01.04.2016, 10:52. Показов 864. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вообщем, не могу понять в чем проблема, хочу подвесить фоновый поток для отлавливания нажатий клавиш, я думаю я дико туплю, вот кусок кода, в чем суть, хочется чтобы рендер графики происходил допустим в мейне, а отлавливать нажатия будем в другом потоке, но после запуска, консоль подает признаки жизни а вот созданное окно нет, происходит зацикливание ну и скорее всего в функции потока
C++
1
2
3
do {
//...
}while(!display.isClosed());
я думаю так, но почему так происходит, ведь мы поидее, отсоединяем его в фоновый поток с помощью detach и отдельно должна происходить отрисовка, и паралельно пулятся ивенты, в цикле до закрытия но чот никак. Наверное я туплю, кто может подскажите вот кусок где проблемма, если нужно скину весь проект.
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
40
#include <iostream>
#include <thread>
#include "Display.h"
#include "Shader.h"
#include "Mesh.h"
#include "Texture.h"
#include "Board.h"
 
void EventsHandler(Display & display, Board & board) {
    static SDL_Event e;
    do {
        while (SDL_PollEvent(&e)) {
            switch (e.type) {
            case SDL_QUIT: display.setClose(true); break;
            case SDL_MOUSEBUTTONDOWN: std::cout << "Click" << std::endl;
            }
        }
    } while (!display.isClosed());
}
 
int main(int argc, char* argv[]) {
    Display Window(800, 600, "Hearhstone");
    Window.ClearColor(0.0f, 0.0f, 0.0f, 1.0f);
 
    Shader shader("shaderTest");
    shader.Bind();
 
    Board &gameBoard = Board::getInstance("https://www.cyberforum.ru/images/Board.jpg");
    
    std::thread EventsThread(EventsHandler, std::ref(Window), std::ref(gameBoard));
    EventsThread.detach();
    
    while (!Window.isClosed()) {
        Window.Clear();
        gameBoard.Draw();
        Window.Update();
    }
    
    return 0;
}
P.S баг какой то, но в строке с созданием стола, ссылка на киберфорум пихается сама

Добавлено через 22 часа 25 минут
все еще актуально
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.04.2016, 10:52
Ответы с готовыми решениями:

Как закрыть поток после вызова detach()?
Всем здрасьте ! С join всё понятно, программа ждёт, когда завершится этот поток. Допустим я вызвал метод detach, как мне поток...

Отделить верхние и нижние частоты в звуковом файле с помощью преобразования Фурье
Доброго времени суток, коллеги. Для себя начал изучение MatLab. Очень интересна тема с работой звуковых файлов в данной среде. Хочу...

Отделить корни уравнения графически и найти решение с помощью метода касательных
{x}^{2}+4sinx=0,8 Отделить корни уравнения графически. Найти приближенное значение одного из корней уравнения с помощью метода...

1
Падаван С++
 Аватар для obivan
447 / 261 / 89
Регистрация: 11.11.2014
Сообщений: 916
02.04.2016, 21:35  [ТС]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.04.2016, 21:35
Помогаю со студенческими работами здесь

Отделить корни графически и найти решение нелинейного уравнения с помощью функции root.
Помогите, пожалуйста, сделать лабу. Очень надо! 1. Построить график функции f (x) таким образом, чтобы были видны все корни ...

Каким образом реализовать поток с помощью BackgroundWorker?
Привет всем! Каким образом реализовать поток с помощью backGrounder (в этом потоке происходит считывание данных из COM-порта)?...

Ошибка-Текущий поток должен быть задан как поток однопоточного контейнера STA
Значит модуль в нем классы.Я создаю свое гуи.Так вот при вызове процедуры котрая копирует текст(в буфер) вылезает эта ошибка я уже с ней...

Thread::Detach() в c++
Добрый день или что у вас там! По заголовку понятно о чём будет вопрос ,я прочитал достаточно много в интернете ,чтобы разочароваться в...

OpenFileDialog и потоки: Текущий поток должен быть задан как поток однопоточного контейнера (STA)
Со стартового окна запускаю формы вот так: new Thread(() =&gt; { ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru