Generally, multithreading refers to the process of taking some big amount of work, splitting it in smaller pieces, and running them a the same time on different cores/threads. The naive approach in raytracing would be to simply divide the number of rays by the number of available threads, and start the work. Hoverer, we found a much better way to split that work.
Our implementation first divides the image in 32x32 pixel big tiles. These tiles we add into an thread-save queue (implemented using mutexes, which are basically passages which only 1 thread at a time can pass), which the different threads then pull work from. This ensures that all threads are running work at all times, where the naive approach could end up with some threads already finished while others aren't even half-way done, and idle time is wasted time. This improves performance by ca. 4-6% in our testing (and allows scaling of about 93-98% per processing thread)
While multithreading may not be a visible component of the image, it reduces rendering time dramatically, which allows us to set higher resolution and sample rates, which in turn improves image quality (since a 12 hour envelope might sound like a lot, but when you start using motion blur, volume rendering, etc. it get's really expensive)