1. A method for replicating a multithreaded application program using a semi-active or passive replication strategy, wherein said application program executes under the control of an operating system having a thread library, the method comprising: at a Primary replica, piggybacking mutex ordering information onto regular multicast messages specifying the order in which threads in the Primary replica have been granted their claims to mutexes; and at a Backup replica, receiving said messages containing said mutex ordering information which determines the order in which threads in said Backup replica are granted mutexes.