Regulating concurrency in Software transactional memory: An effective model-based approach