- Ostrich algorithm
-
For other uses, see ostrich (disambiguation).
In computer science, the ostrich algorithm is a strategy of ignoring potential problems on the basis that they may be exceedingly rare - "to stick your head in the sand and pretend that there is no problem". This assumes that it is more cost-effective to allow the problem to occur than to attempt its prevention.
This approach may be used in dealing with deadlocks in concurrent programming if deadlocks are believed to be very rare, and if the cost of detection or prevention is high.
Trade-offs
- Convenience
- Correctness
It is one of the methods of dealing with deadlocks. Other methods are: avoidance (banker's algorithm), prevention, detection and recovery.
Some algorithms with poor worst-case performance are commonly used because they only exhibit poor performance on artificial cases that do not occur in practice; typical examples are the simplex algorithm and the type-checking algorithm for Standard ML. Issues like integer overflow in programming languages with fixed-width integers are also frequently ignored because they occur only in exceptional cases that don't arise for practical inputs.
Hybrid Approach
Hybrid approach to using Ostrich algorithm is determining that the exceedingly rare case does not happen, and then switching from another costly algorithm to this one. The trade-off here is that if circumstances change or are unaccounted for, the rare problem may re-occur.
An example can be found in the Non Hard-Locking ReadWriteLocker[1] site, where you have the option to determine where deadlocks might occur, and then turn off deadlock detection once you determine it doesn't need to be used.
References
Categories:- Concurrent algorithms
- Algorithm stubs
Wikimedia Foundation. 2010.