Nano Hash - криптовалюты, майнинг, программирование

Как остановить блокировку?

Привет всем, я задавал этот вопрос несколько раз за последние несколько дней, но я просто не понимаю ... Я в основном хочу, чтобы цикл while для команды Beep выполнялся в фоновом режиме, пока пользователь может взаимодействовать с доступные операторы case (показан только один... есть и другие).... я продолжаю блокироваться, и каждый раз, когда я хочу, чтобы звуковой сигнал постоянно издавал звук, я блокирую остальную часть своей программы... я должен использовать звуковой сигнал, поэтому, пожалуйста, не не предлагать никаких других функций ..

вот пример кода...

while( keypress != 'q' || keypress != 'Q')
{   
    x = Beep(x);
    while (x == 1)
       Beep(350,300);

    alarm_t current;
    keypress = _getch();

    switch(keypress){

        case 'h':
            sprintf_s(current.message,"high alarm");
            current.timeOfEvent = time(NULL);
            recordEvent(current);
            break;

Теперь... моя проблема связана с циклом while и командой Beep.... вот что я вызываю для Beep(x)

int Beep(int y)
{ 
    return y;
}

Итак, в основном я пытаюсь вызвать функцию за пределами моего текущего файла cpp, чтобы просто сравнить x и y и вернуть y как эквивалентный x... я думал, что это может избежать блокировки, но это не так...

27.03.2013

  • из-за этого программа блокируется звуковым сигналом... 28.03.2013
  • Вы действительно должны прекратить использовать циклы while в циклах while. Если вы все сделаете правильно, ваш верхний цикл будет настолько быстрым, что пользователи не услышат большой разницы, если вы просто вызовете Beep без внутреннего while. 28.03.2013
  • если я удалю этот внутренний цикл while, тогда я получу только один звуковой сигнал... и я получу еще один звуковой сигнал только при нажатии клавиши... я хочу, чтобы он постоянно издавал звуковой сигнал 28.03.2013
  • попробуй хоть немного поспать 28.03.2013
  • while (x == 1) Beep(350,300); может завершиться только в том случае, если звуковому сигналу удастся изменить значение x. Что маловероятно (это называется циклическим инвариантом). Таким образом, цикл выполняется либо ноль раз, либо бесконечно. 28.03.2013
  • как мне применить сны в моем белом? и я согласен wildplasser ... но как мне обойти это? Я очень хорошо знаю проблему, я трижды писал об этом, но что я могу сделать? 28.03.2013
  • Что делает _getch(), когда нет ввода? Блокируется ли он до (действительного) ввода или возвращает специальное значение? 28.03.2013

Ответы:


1

Ваш цикл вокруг звукового сигнала просто не будет работать, и _getch блокируется. Таким образом, он будет просто блокироваться, пока не появится персонаж.

В зависимости от того, на какой платформе вы работаете, вам нужно что-то вроде kbhit (и если вы погуглите, то найдете альтернативы для других платформ). т.е. это не стандартная функциональность C и не специфичная для платформы.

kbhit вернет true или false в зависимости от того, есть символ или нет.

Итак, вы можете сделать:

while(!key_is_quit(ch))
{
  Beep();
  if(kbhit())
  {
    ch = getch();
  // switch....
  }
}
27.03.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..