я должен вызвать допустим через 5 секунд. Кто подскажет как сделать? Гуглил, безрезультатно
Подожди пять секунд и вызови функцию с параметрами
sleep(5000)? сурово...
таймеров в плюсах изкоробки нет, гугли либо либы либо апи осей
Я пробовал, но работает не так как надо
#include <iostream> #include <chrono> int Main() { this_thread::sleep_for(chrono::milliseconds(1000)); cout << endl; }
1000 поменяй на 5000
Пишешь класс, который хранит в себе вектор из задач, в структуре хранишь интервал, кол-во повторений, функцию, ид задачи. А потом где нибудь в цикле пихаешь метод, который гоняет все задачи по кругу и проверяет их по времени
Рой, почему ты занимаешься оверинжинирингом? Зачем айди? Зачем кол-во повторений? Как это отвечает на изначальный вопрос?
Потому что нужно изначально писать нормальный класс, который будет уметь не только создавать задачу, но и поддерживать возможность повторять одну и туже задачу N раз, потом удалять созданные задачи и модифицировать их
Нужно формулировать требования, а потом писать класс, а не пытаться обобщить несуществующий опыт
Каким фреймворком/библиотеками пользуетесь?
конечно же скайп boost
Ответ будет различаться, в зависимости от использования asio, libev, boost, qt, gtk или использования только стандартной библиотеки
А какой был бы ответ при использовании только стандартной библиотеки?
Е ли можно заснуть на 5 секунд и ничего не делать, то std::this_thread::sleep(std::chrono::seconds(5)); function_to_call_after_sleep() Если ещё предвидится работа std::thread t([]{ std::this_thread::sleep(std::chrono::seconds(5)); function_to_call_after_sleep(); }); // ещё какая-то работа t.join();
Есть класс для подсчёта времени sf::Clock https://www.sfml-dev.org/tutorials/1.6/window-time.php Можно в основном цикле по обработке событий проверять, что прошло нужное время. Однако такой подход может оказаться не самым эффективным. Расскажите больше о задаче, чего хотите добиться?
Я пишу игру морской бой, и после хода пользователя должна быть задержа перед ходом бота
Вам нужно и поспать немного, и обработку событий окна не заморозить, при этом активные действия со стороны пользователя не ожидаются. Яб попробовал завести sf::Clock, в основном цикле по обработке событий проверять, что прошло нужное время. Если время не прошло - вызывать небольшой сон на несколь десятков милисекунд, чтобы не кушать ресурсы процессора. Что-то типа sf::Clock clock; const sf::Time kSleepTime = sf::milliseconds(70); const float kBotReactionDelay = 5.0; //... while(m_Window.isOpen()) { //... if (clock.GetElapsedTime() < kBotReactionDelay) { sf::sleep(kSleepTime); } }
А оно будете как-то обнулятся постоянно?
Посмотрите документацию, там есть функция для обнуления
Антон, как вас занесло в суп?
Ну и, разумеется, когда я смогу скачать userver?
Да хоть завтра, главное в контору нужную устроиться У меня и вакансия прям в группу разработки userver есть ;)
1. Вижака не будет - так винду хоть дадут? 2. Нужна ли сложная многопоточка? 3. Сколько дежурств?
1. Да, но яб не советовал с этого начинать... 2. Желательно 3. 1 раз в полтора месяца, но сразу недельное 4. Собес - сомнительное удовольствие :(
А что такого сомнительного на собесах? Я так-то завязавший олимпиадник, меня этими вашими не удивишь
Ну тогда должно быть норм, разве что длительность в сумме приличная такая Но собезы из дома - сильно приятнее, чем куда-то ехать
Дома и стены помогают. :)
Проверено, с дома на родной клаве пишешь в полтора раза быстрее код
Угу, ещё и клавиатура родная.
Обсуждают сегодня