Вычисления с ограничением времени

Я пытаюсь написать конструкцию, которая позволяет мне выполнять вычисления в заданное время окно. Примерно так:

def expensiveComputation(): Double = //... some intensive math

val result: Option[Double] = timeLimited( 45 ) { expensiveComputation() }

Здесь timeLimited запустит ownComputation с таймаутом 45 минут. По истечении времени ожидания возвращается None , иначе результат помещается в Some .

Я ищу решение, которое:

  • Достаточно дешево по производительности и памяти;
  • Будет запускать ограниченную по времени задачу в текущем потоке .

Есть предложения?

ИЗМЕНИТЬ

Я понимаю, что моя исходная проблема не имеет решения. Скажем, я могу создать поток для расчета (но я предпочитаю не использовать пул потоков / исполнитель / диспетчер). Какой самый быстрый, безопасный и чистый способ сделать это?

8
задан paradigmatic 4 October 2011 в 18:57
поделиться