Код:
channel (int nn): size(nn)
{
buf = new double[nn];
countr=0; countw=0;
Просто гениальный код. Для чего нужны инициализаторы, видимо, автор не знает.
Какая-то странная у Вас зависимость получается. При входе в main приложение сразу выводит в поток текст, работает это не в треде, должно вывестись при любом N, по идее. Пробовали выпиливать свои циклы из main?