It is only necessary to call this function if multiple threads might use Xlib concurrently. If all calls to Xlib functions are protected by some other access mechanism (for example, a mutual exclusion lock in a toolkit or through explicit client programming), Xlib thread initialization is not required. It is recommended that single-threaded programs not call this function.
The _X_L_o_c_k_D_i_s_p_l_a_y function locks out all other threads from using the specified display. Other threads attempting to use the display will block until the display is unlocked by this thread. Nested calls to _X_L_o_c_k_D_i_s_p_l_a_y work correctly; the display will not actually be unlocked until _X_U_n_l_o_c_k_D_i_s_p_l_a_y has been called the same number of times as _X_L_o_c_k_D_i_s_p_l_a_y. This function has no effect unless Xlib was successfully initialized for threads using _X_I_n_i_t_T_h_r_e_a_d_s.
The _X_U_n_l_o_c_k_D_i_s_p_l_a_y function allows other threads to use the specified display again. Any threads that have blocked on the display are allowed to continue. Nested locking works correctly; if _X_L_o_c_k_D_i_s_p_l_a_y has been called multiple times by a thread, then _X_U_n_l_o_c_k_D_i_s_p_l_a_y must be called an equal number of times before the display is actually unlocked. This function has no effect unless Xlib was successfully initialized for threads using _X_I_n_i_t_T_h_r_e_a_d_s.