Tells to TotalView to hold all threads in the current process. Hold means that you are telling TotalView that when you use a command that would run the threads in this process (such as a
Group > Go command), it is ignored. Note that TotalView does not allow you to hold manager threads.
Compare this command with the Process > Hold command. If you hold a process, none of the threads will ever run; that is, a
go has no effect. When the process is held, the hold state of any of the process’s threads is ignored.
If you release the process and hold all of the threads, the effect is essentially the same: none of the non-manager threads will run; and a
go command will only run manger threads.
Here’s one example illustrating why you need both commands. Suppose a thread barrier is not yet satisfied: some threads are held at the barrier and some are expected to get there later. Since a thread barrier can span processes, you can have multiple processes with multiple threads trying to get to the barrier. You may want to hold one or more processes while allowing threads in other processes to get to the barrier. In this case, holding at the process level means that you are not destroying the hold state of the individual threads. At a later time, you can release the processes to allow the remaining threads to get to the barrier.