Well, as J.Newcomer wrote in his essay: The Best Synchronization Is No Synchronization!
Is your worker thread only writes data into array and your main GUI thread only reads this data in, then a better way would be not use any synchronization at all.
Just define some user message (from the WM_APP range), let the worker thread PostMessage this message and pass the data as PostMessage parameter(s), and let the main thread handle this message, fill data in the array and work with this array.