My 2cents (before the experts come along) is that it works well. The thing, in addition to starting any threads before doing any work with Tk, is to start the threads as early as possible with "use" (compile time) and then "require" (runtime) as much as possible of the other modules needed, so that the stuff copied into the other "worker" threads is as minimal as possible.
For instance by using "use Tk;" instead of "require Tk;" we clearly see that lot of extra Tk stuff is copied into the new threads by looking at mem usage in task manager.
use Tk; mem usage perl.exe: 24MB/21MB (phys/virtual)
require Tk; mem usage perl.exe: 12MB/9MB (phys/virtual)
(7 threads were created in this example.)