Начать событие по заданному времени

Используйте только uniq

$ cat file
aaaaaa
bbbbbb
cccccc
ababab
ababab
ababab
ababab

$ cat file | uniq
aaaaaa
bbbbbb
cccccc
ababab

$ sort file | uniq -u
aaaaaa
bbbbbb
cccccc
0
задан Litiec 19 January 2019 в 21:49
поделиться

1 ответ

Simultanous моделирования на двух или более компьютерах сложно по некоторым причинам.

  • Прежде всего, я хотел бы убедиться, что все подключенные компьютеры синхронизируют свои часы с NTP. (Подробнее см. https://en.wikipedia.org/wiki/Network_Time_Protocol ). Насколько я знаю, самая большая разница составляет не более 50 мс. В противном случае каждый подход потерпит неудачу из-за различий часов.
  • Во-вторых, часы в разных системах имеют разную точность. Я могу рекомендовать прочитать блог Алексея Шипилева: https://shipilev.net/blog/2014/nanotrusting-nanotime/ . Речь идет о точности часов на машинах в целом.
  • В-третьих, вы должны знать, что у Linux есть циклический сдвиг в 1 мс, а в Windows - около 10-15 мс. Поэтому Thread.sleep (...) не будет работать с меньшими надежными интервалами времени. Если вы хотите «работать с меньшими промежутками времени», вам нужно сделать что-то вроде «занятого ожидания», которое уродливо, но необходимо:

    public class SleepUtil {
    
        public static final long MIN_PRECISION_IN_MICROS = 15L;
    
        public static void main(String[] args) {
            long before = System.nanoTime();
            while (true) {
                final long after = System.nanoTime();
                long diff = (after - before) / 1000l;
    
                before = after;
                System.out.println(diff + " micros");
    
                SleepUtil.sleepMicros(500);
            }
        }
    
        private static void sleepMicros(int waitTimeInMicros) {
            final long startTimeInNanos = System.nanoTime();
            long elapsedTimeInMicros = 0L;
            while (elapsedTimeInMicros < waitTimeInMicros - MIN_PRECISION_IN_MICROS) {
                elapsedTimeInMicros = (System.nanoTime() - startTimeInNanos) / 1000L;
            }
        }
    }
    

Однако, оно будет загружать ваш процессор не всегда быть надежным (но большую часть времени).

0
ответ дан Jeppe 19 January 2019 в 21:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: