1. A method comprising: running a plurality of tasks in a multiprocessor system that includes a plurality of processors, each processor having an identity; scheduling the plurality of tasks using a plurality of scheduling domains by scheduling tasks on a processor independent of the identity of the processor, wherein none of the plurality of scheduling domains is bound to any one processor of the plurality of processors; implicitly synchronizing the tasks with regard to one or more resources shared by the tasks in said system by associating said tasks with the scheduling domains, wherein each of the one or more resources is assigned to one of the scheduling domains and is not subject to domain migration, wherein implicitly synchronizing the tasks comprises prohibiting tasks that are each associated with a same scheduling domain from running concurrently, and allowing tasks that are each associated with different scheduling domains to run concurrently; and changing association of a task of the plurality of tasks from a first scheduling domain to a second scheduling domain, if the task requires one of the shared resources assigned to the second scheduling domain.