Хорошее использование мьютекса здесь, кстати.
Вы можете добавить еще один счетчик, защищенный тем же мьютексом, и только увеличивать его. Затем в коде завершения вы можете проверить его, чтобы убедиться, что все потоки должны запускаться.
т.е. измените его на "if (counter == 0 && началось == 2)".
Поскольку вы защищаете счетчик и запускаете доступ с мьютексом, если 1 и 2 запускаются до того, как завершится, первый из них завершится, увидит запущенный = 2 и счетчик = 1. Другой увидит запущенный = 2 и счетчик = 0 и удали ресурсы.
Если поток завершается до того, как запускается другой, он увидит запущенный = 1 и счетчик = 0. Затем другой поток увидит запущенный = 2 и счетчик = 0 и очистится.