Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 18.12.2021
Сообщений: 13

Выполнение кода n количество времени

30.07.2022, 22:38. Показов 582. Ответов 5

Студворк — интернет-сервис помощи студентам
Всем здравствуйте.

У меня есть функция и мне нужно её выполнять ровно 3 секунды, как это можно реализовать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.07.2022, 22:38
Ответы с готовыми решениями:

Таймер (выполнение кода через заданный промежуток времени)
Всем привет, подскажите, как создать внутренний таймер, то есть через что бы через некоторое количество секунд, программа опять выполняла...

Как ускорить выполнение кода? (Получение цвета пикселя, сравнение и выполнение действия)
Всем привет. Нужна консультация экспертов) Программа такая. Есть пиксель на экране, в нем то появляется яркий цвет, то темный (лампочка...

Выполнение кода в реальном времени.
Имеется код: if getasynckeystate(1)<>0 then begin Sleep(20); mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); ...

5
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
30.07.2022, 22:52
Цитата Сообщение от Scar4ik Посмотреть сообщение
У меня есть функция и мне нужно её выполнять ровно 3 секунды, как это можно реализовать?
Выполняй её меньше 3 секунд, а на оставшееся время усыпи поток.
Если же она выполняется больше 3 секунд, то советую написать другую функцию.

Добавлено через 3 минуты
Scar4ik, а если серьёзно, то что за функция и причем тут 3 секунды?
1
0 / 0 / 0
Регистрация: 18.12.2021
Сообщений: 13
30.07.2022, 22:55  [ТС]
Потоки противопоказано, если ещё какой-то вариант?

Добавлено через 1 минуту
Хочу сделать вроде загрузки в ImGui (открывается меню, по средине меню кружок и крутиться, через некоторое время открывается меню)
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
30.07.2022, 23:03
Цитата Сообщение от Scar4ik Посмотреть сообщение
Потоки противопоказано
Ну ваще-то твой код всегда выполняется в потоке, если чо...
Цитата Сообщение от Scar4ik Посмотреть сообщение
Хочу сделать вроде загрузки в ImGui (открывается меню, по средине меню кружок и крутиться, через некоторое время открывается меню)
Ну значит у тебя там игровой цикл.
В игровом цикле всегда обрабатывается временной интервал, поэтому ты можешь создать событие.
Поместить пару время-коллбэк в очередь событий, которая обрабатывается в этом цикле, т.е. кждую итерацию вычитаешь из компоненты время дельту и если время становится меньше или равно 0, вызываешь коллбэк. В самом коллбэке ты можешь выставить флаг, который будет проверятся во время рисования gui и выполнять соответсятвующий код.
1
 Аватар для programmer_08
687 / 444 / 209
Регистрация: 18.10.2020
Сообщений: 1,606
30.07.2022, 23:14
в начале программы делаем
C++
1
time_t start = clock();
в конце main делаем:
C++
1
while(clock() - start < 3000);
ядро загружается на 100%(
или
C++
1
2
if(clock() - start < 3000)
   Sleep(3000 - clock() + start);
тогда ядро не загружается
1
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
30.07.2022, 23:55
Scar4ik, простенький пример
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
41
42
43
44
45
46
47
48
49
50
51
// ...
 
class EventQueue
{
public:
  using Time = double;
  using Callback = std::function<void()>; // #include <functional> !!!!!!!!!!!!!!!
 
  void add_event(Time dt, Callback cb) {
    m_events.emplace_back(ImGui::GetTime() + dt, std::move(cb));
  }
 
  void update() {
    Time now = ImGui::GetTime();
    for (auto it = m_events.begin(); it != m_events.end();) {
      if (it->first <= now) {
        it->second();
        it = m_events.erase(it);
      } else {
        ++it;
      }
    }
  }
private:
  std::vector<std::pair<Time, Callback>> m_events;
};
 
EventQueue g_event_queue; // глобальная очередь
 
int main() {
 
    //...
    bool some_flag = false;
    //...
 
    while (true) // игровой цикл
    {
        //...
        g_event_queue.update();
        //...
        // где-то в рисовании интерфейса
        if (!some_flag && ImGui::Button("some button")) {
            some_flag = true;
            g_event_queue.add_event(3, [&some_flag]{ some_flag = false; });
        }
        if (some_flag)
            ImGui::LabelText("##label", "%s", "Please wait...");
        }
        //...
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.07.2022, 23:55
Помогаю со студенческими работами здесь

Измерение времени затраченного на выполнение кода
Подскажите пожалуйста, для сравнения времени выполнения операции с элементами одномерного, двумерного прямоугольного и двумерного ...

Как ограничить выполнение кода по времени?
у меня есть следующий код, который позволяет вводить пользователю строку с консоли до нажатия Enter (с пустой строкой) и выполняет коекакие...

Выполнение кода через определенный интервал времени
Как создать таймер который по истечению заданного времени выполнил бы событие которое мне нужно? и ещё чтоб можно было вывести...

Выполнение определенного кода через определенный интервал времени
Народ, подскажите как сделать автообновление этого кода через (скажем) 5 - 10 секунд Private Sub Form1_Load(sender As...

Выполнение ruby кода через определенный промежуток времени
Нужно ежедневно выполнять определенный код. Использую гем whenever, но так и не понял как его настроить. Вот код который нужно...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru