sigwait system call in UNIX signal

Hi Everybody,
I have gone through man of sigwait and new to UNIX signals. Could anyone explain me about the following lines mentioned in sigwait man help ?

"The selection of a signal in set is independent of the signal
mask of the calling thread or LWP. This means a thread or
LWP can synchronously wait for signals that are being
blocked by the signal mask of the calling thread or LWP."

What is the difference between sigsuspend and sigwait system call as both system call blocks the process till the signal arrives ?

Regards
Dinesh

Thanks for your descriptive reply.

I have one query regarding the behaviour of sigwait system call.

Let us suppose that I have blocked the signal SIGUSR1 by calling sigprocmask() function and I have set the signal handler for SIGUSR1 by calling signal function.

static void sig_usr1(int signo) {
printf("Signal SIGUSR1 Fired!\n");
}

signal(SIGUSR1,sig_usr1);
sigset_t usrmask;

sigemptyset(&usrmask);
sigaddset(&usrmask,SIGUSR1);

sigprocmask(SIG_BLOCK,&usrmask,NULL);

sigwait(&usrmask,&signo);

Does sigwait() calls the signal handler for the signal which has caused it to return ? What I means that does, in above case, the signal handler will be called when i explicitly sends the signal SIGUSR1 to the process or do I need to unblock the signal to get signal handler get called ?

sigprocmask(SIG_UNBLOCK,&usrmask,NULL);

Regards
Dinesh