Мне нужна некоторая синхронизация между несколькими процессами, что-то вроде семафоров POSIX или общей последовательной диспетчерской очереди. Есть ли что-то подобное для быстрого в OS X.Синхронизация процессов swift по OSX
0
A
ответ
1
Именованные семафоры доступны в Swift:
import Darwin
var sema = sem_open("/mysema", O_CREAT, 0o666, 0)
guard sema != SEM_FAILED else {
perror("sem_open")
exit(EXIT_FAILURE)
}
defer { sem_close(sema) }
print("Waiting for semaphore")
sem_wait(sema)
print("Got semaphore")
0
Как указал Мартин Р, это работает между потоками, а не процессами.
Да, конечно, вы should read о Центральном диспетчерском пункте (GCD). Или here.
Хорошее видео для него here на WWDC.
Вот пример о семафоров, взятых из here:
private func semaphoreExample2() {
let semaphore = dispatch_semaphore_create(0)
let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
dispatch_async(queue) {
NSLog("Running async task...")
sleep(3)
NSLog("Async task completed")
dispatch_semaphore_signal(semaphore)
}
NSLog("Waiting async task...")
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER)
NSLog("Continue!")
}
Или еще один в Swift 3 из here:
// creating the semaphore with a resource count of 1
let semaphore = DispatchSemaphore(value: 1)
let watchdogTime = DispatchTime.now() + DispatchTimeInterval.seconds(1)
...
// synchronize access to a shared resource using the semaphore
if case .TimedOut = semaphore.wait(timeout: watchdogTime) {
print("OMG! Someone was bogarting that semaphore!")
}
// begin access shared resource…
...
// end access to resource
semaphore.signal()
+0
Может ли семафор GCD делиться между различными * процессами *? –
+0
Пропущен раздел «между процессами» :-( –
Смежные вопросы
- 1. Синхронизация процессов через Интернет
- 2. Синхронизация процессов PHP/Sqlite3
- 3. Синхронизация процессов Android
- 4. Интересная синхронизация процессов C++ [inter]
- 5. синхронизация потоков против синхронизации процессов
- 6. Синхронизация параллельных процессов в Haskell
- 7. Синхронизация родительского и дочернего процессов
- 8. Синхронизация процессов путем блокировки файла
- 9. Рекомендации по API Mac OSX (желательно Swift)?
- 10. Синхронизация двух процессов при некотором системном вызове
- 11. Взаимное исключение и синхронизация процессов; C++
- 12. C++ Qt быстрая синхронизация асинхронных процессов
- 13. Синхронизация параллельных процессов в bash с «временем»
- 14. Странная синхронизация потока на OSX с C
- 15. Синхронизация данных Async в Swift
- 16. сделалBeginContact logic OSX swift
- 17. Функция перетаскивания swift OSX
- 18. windowDidResize protocol swift OSX
- 19. Swift 3 OSX button.addTarget
- 20. Parse - для OSx Swift
- 21. Синхронизация среды разработки между OSX и Windows
- 22. Искатель Синхронизация Расширение Ожидание присоединения в XCode 7.0.1 OSX 10.10
- 23. Синхронизация по linux, c/C++
- 24. Синхронизация основных данных в Swift
- 25. Нажмите внутри swift 2.2 OSX
- 26. Список процессов по типу
- 27. TableView в OSX с Swift
- 28. Swift cocoa Osx application imageviews
- 29. Делегаты в OSX с Swift
- 30. OSX Swift открыть URL-адрес в браузере по умолчанию
'sem_open()' и друзья, кажется, доступны в Swift, вы пытались его использовать? –
Я пропустил их, я просто просматривал документы. Можете ли вы отправить ответ, и я приму его? – Jelly