1. A method of allocating and releasing architectural resources in a multi-threaded system, the method comprising: allocating the architectural resources to a first thread array including a plurality of threads to execute a processing task; determining by each thread in the first thread array, during execution of the processing task, whether a release of the architectural resources will be overridden when the first thread array exits; releasing the architectural resources when the first thread array exits and no thread in the first thread array determined that the release of the architectural resources would not be overridden; and retaining the architectural resources when the first thread array exits and at least one thread in the first thread array determined that the release of the architectural resources would be overridden.