У меня есть метод делегата фреймворка Bluetooth, при котором через несколько миллисекунд я получаю ответ, который мне нужно прочитать из другого метода, запущенного в потоке. Обычно ответ дается через 30–100 мс после операции записи. Поскольку за очень короткое время может быть выполнено несколько операций записи, мне нужно как можно скорее прочитать ответ.
//Delegate method-->
var readData?
func responseFromBLE(data: Data){
readData = data
//wake up the sleeping thread as soon as this method calls
}
//Here is the thread which writes to BLE and then it waits for 100ms before reading data
func writeSyc(data: Data?, key: String) {
DispatchQueue.global().async {
BLEViewController.semaphore.wait()
writeToBLE(data: data!)
usleep(100000). //sleeping for 100ms
saveTheBLEResponse(key, readData)
BLEViewController.semaphore.signal() // releasing the resource
}
}
Я хочу ускорить эту операцию и пробудить поток до 100 мс, как только responseFromBLE (data: Data ) вызовы методов. Если это невозможно, дайте мне знать, есть ли еще какой-нибудь прием, который я могу использовать для ускорения операции записи.