Как сделать sysctl и gettimeofday потокобезопасными в Swift?IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Как сделать sysctl и gettimeofday потокобезопасными в Swift?

Сообщение Anonymous »

Я пытаюсь синхронизировать время ntp с сервером с помощью библиотеки Kronos.
Однако я считаю, что код не полностью защищен от многопоточного доступа, поскольку он использует системный код низкого уровня.
/>Итак, кто-нибудь знает, как я могу гарантировать, что sysctl и gettimeofday являются потокобезопасными при их вызове? Или есть ли потокобезопасная альтернатива для получения того же результата?

Код: Выделить всё

func currentTime() -> TimeInterval {
var current = timeval()
let systemTimeError = gettimeofday(&current, nil) != 0
assert(!systemTimeError, "system clock error: system time unavailable")

return Double(current.tv_sec) + Double(current.tv_usec) / 1_000_000
}

Код: Выделить всё

static func systemUptime() -> TimeInterval {
var mib = [CTL_KERN, KERN_BOOTTIME]
var size = MemoryLayout.stride
var bootTime = timeval()

let bootTimeError = sysctl(&mib, u_int(mib.count), &bootTime, &size, nil, 0) != 0
assert(!bootTimeError, "system clock error: kernel boot time unavailable")

let now = currentTime()
let uptime = Double(bootTime.tv_sec) + Double(bootTime.tv_usec) / 1_000_000
assert(now >= uptime, "inconsistent clock state: system time precedes boot time")

return now - uptime
}
Я думал об использовании NSLock, но я могу защитить только от получателя (вызывающего), а не от установщика (системы)

Подробнее здесь: https://stackoverflow.com/questions/782 ... e-in-swift
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Gettimeofday вычисляет время выполнения со случайными значительными отклонениями?
    Anonymous » » в форуме Linux
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Являются ли groovy ассоциативные массивы потокобезопасными?
    Anonymous » » в форуме JAVA
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Являются ли функции ведения журнала нижнего уровня Android потокобезопасными?
    Гость » » в форуме Android
    0 Ответы
    19 Просмотры
    Последнее сообщение Гость
  • Являются ли STL Map или HashMaps потокобезопасными?
    Гость » » в форуме C++
    0 Ответы
    25 Просмотры
    Последнее сообщение Гость
  • Являются ли TCP-сокеты потокобезопасными для отправки и получения в Linux?
    Anonymous » » в форуме Linux
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»