Multithreading and ProductIterator

I should have mentioned in my post that the real problem has more than two dimensions, [x1, x2, x3, x4, ... , x20]. So the Iterators.product will be a convenient scalable solution for this case. I am going to try Transducers.jl once it supports the Iterators.product.