lib: posix: fix couple of race conditions

Added locks around thread state accesses in
pthread_create() to avoid race conditions.

Signed-off-by: Niranjhana N <niranjhana.n@intel.com>
diff --git a/lib/posix/pthread.c b/lib/posix/pthread.c
index fc215c0..7cd7732 100644
--- a/lib/posix/pthread.c
+++ b/lib/posix/pthread.c
@@ -151,11 +151,18 @@
 	prio = posix_to_zephyr_priority(attr->priority, attr->schedpolicy);
 
 	thread = &posix_thread_pool[pthread_num];
-	thread->cancel_state = (1 << _PTHREAD_CANCEL_POS) & attr->flags;
-	thread->state = attr->detachstate;
-	thread->cancel_pending = 0;
 	pthread_mutex_init(&thread->state_lock, NULL);
 	pthread_mutex_init(&thread->cancel_lock, NULL);
+
+	pthread_mutex_lock(&thread->cancel_lock);
+	thread->cancel_state = (1 << _PTHREAD_CANCEL_POS) & attr->flags;
+	thread->cancel_pending = 0;
+	pthread_mutex_unlock(&thread->cancel_lock);
+
+	pthread_mutex_lock(&thread->state_lock);
+	thread->state = attr->detachstate;
+	pthread_mutex_unlock(&thread->state_lock);
+
 	pthread_cond_init(&thread->state_cond, &cond_attr);
 	sys_slist_init(&thread->key_list);
 	pthread_num++;