Программирование UNIX. структура timeval, как распечатать его (C-программирование)

В примере кода Вы отправили, получение никогда не формуется.

В более сложном примере:

MyProperty.Field1 = MyProperty.doSomething() + 2;

И конечно принятие Вас сделал a:

lock (mLock) 
{
    // stuff...
}

В doSomething() затем все вызовы блокировки были бы не быть достаточными для гарантии синхронизации по всему объекту. Как только doSomething() функциональные возвраты, блокировка потеряна, затем дополнение сделано, и затем присвоение происходит, который блокирует снова.

Или, для записи это иначе, который можно симулировать как блокировки, не сделано amutomatically и переписывает это больше как "машинный код" с одной операцией на строку, и это становится очевидным:

lock (mLock) 
{
    val = doSomething()
}
val = val + 2
lock (mLock)
{
    MyProperty.Field1 = val
}
18
задан user69514 24 September 2009 в 02:20
поделиться

3 ответа

В библиотеке GNU C , struct timeval :

объявлена ​​в sys / time.h и имеет следующие члены:

 long int tv_sec

Это количество полных секунд прошедшего времени.

 long int tv_usec

Это оставшееся истекшее время (доли секунды), представленное как количество микросекунд. Это всегда меньше миллиона.

Таким образом, вам нужно будет выполнить

printf("%ld.%06ld\n", usage.ru_stime.tv_sec, usage.ru_stime.tv_usec);

, чтобы получить "хорошо отформатированную" временную метку, например 1.000123 .

29
ответ дан 30 November 2019 в 07:13
поделиться

Since struct timeval will be declared something like:

struct timeval {
    time_t      tv_sec;
    suseconds_t tv_usec;
}

you need to get at the underlying fields:

printf ("%ld.%06ld\n", usage.ru_stime.tv_sec, usage.ru_stime.tv_usec);
printf ("%ld.%06ld\n", usage.ru_utime.tv_sec, usage.ru_utime.tv_usec);
8
ответ дан 30 November 2019 в 07:13
поделиться

Сортировка слиянием не требует доступа O (1) и является O (n ln n). Нет известных алгоритмов сортировки общих данных лучше, чем O (n ln n).

Специальные алгоритмы данных, такие как сортировка по основанию (ограничивает размер данных) или сортировка гистограммы (подсчитывает дискретные данные), могут сортировать связанный список с меньшим функция роста, если вы используете другую структуру с доступом O (1) в качестве временного хранилища.

Другой класс специальных данных - это сравнение почти отсортированного списка с k элементами, неупорядоченными. Его можно отсортировать за O (kn) операций.

Копирование списка в массив и обратно будет O (N), поэтому можно использовать любой алгоритм сортировки, если пространство не является проблемой.

Например, при данном связанный список, содержащий uint_8 , этот код отсортирует его за O (N) раз, используя сортировку гистограммы:

1
ответ дан 30 November 2019 в 07:13
поделиться
Другие вопросы по тегам:

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