We consider the Do-All problem, where p cooperating processors need to complete t similar and independent tasks in an adversarial setting. Here we deal with a synchronous message passing system with processors that are subject to crash failures. Efficiency of algorithms in this setting is measured in terms of work complexity (also known as total available processor steps) and communication complexity (total number of point-to-point messages). When work and communication are considered to be comparable resources, then the overall efficiency is meaningfully expressed in terms of effort defined as work + communication. We develop and analyze a constructive algorithm that has work O(t + p log p ( √ p log p + √ t log t )) and a nonconstructive algorithm that has work O(t + p log 2 p). The latter result is close to the lower bound Ω(t + p log p/ log log p) on work. The effort of each of these algorithms is proportional to its work when the number of crashes is bounded above by c p, for some positive constant c < 1. We also present a nonconstructive algorithm that has effort O(t + p 1.77 ). The results of this paper were announced in a preliminary form in [11] and published in their final version as [10].