A number of approaches to asynchronous communication in parallel programs based on both data dependence analysis and buffering techniques are briefly described. A criterion for automatically resolving some classes of deadlocks by means of asynchronous data exchanges is established and examples showing the comparative power of the approaches for deadlock avoidance are presented.