ProcArray in PostgreSQL
If you use the popular lw_lockwait.d script (one for the version of PostgreSQL that is being used) and it highlights "ProcArrayLock" as one of top Lock Wait events then you have come to the right section here to get more information about it.
ProckArrayLock is designed to protect the ProcArray structure from multiple processes. ProcArray is defined as struct ProcArrayStruct which contains an array of maxProc instances of PGPROC, one for each PostgreSQL process that potentially can be running at any time. The ProcArray is placed in shared memory reachable from all PostgreSQL processes. The PGPROC struct contains information that is public and used by other processes executing transactions.