one producer per thread