Adaptive Parallelism For Coupled, Multithreaded Message-Passing Programs