Я пытаюсь реализовать алгоритм параллельного поиска. Концепция примерно такая:
- Начните с кандидата и проверьте, является ли это желаемым значением
- Если нет, создайте больше кандидатов и добавьте их в очередь.
- Повторяйте до достижения желаемого значения
В качестве упрощенного примера: я хочу запустить генератор случайных чисел в диапазоне 0..<n
, пока он не даст мне 0. Я хочу уменьшать n
с каждой итерацией, чтобы гарантировать успех. Это мой код до сих пор:
let queue = dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)
let work : dispatch_function_t = { arg in
let upper = UnsafeMutablePointer<UInt32>(arg).memory
let random = arc4random_uniform(upper)
if random == 0 {
// do things
} else {
dispatch_async_f(queue, &(upper - 1), work)
// Error: Variable used within its own initial value
}
}
dispatch_async_f(queue, &1000, work)
// Error: '&' used for non inout argument of type 'UnsafeMutablePointer<Void>'
У меня две ошибки:
Variable used within its own initial value
'&' used for noninout argument of type 'UnsafeMutablePointer<Void>'
Как я могу их исправить? Спасибо заранее!