diff --git a/resourceschedule/ffrt/c/shared_mutex.h b/resourceschedule/ffrt/c/shared_mutex.h
new file mode 100644
index 0000000000000000000000000000000000000000..bdfa6a89f85615eff2a77f16bdb9fe87c2db1294
--- /dev/null
+++ b/resourceschedule/ffrt/c/shared_mutex.h
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2023 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @addtogroup FFRT
+ * @{
+ *
+ * @brief Provides FFRT C APIs.
+ *
+ * @since 15
+ */
+
+/**
+ * @file shared_mutex.h
+ *
+ * @brief Declares the shared mutex interfaces in C.
+ *
+ * @library libffrt.z.so
+ * @kit FunctionFlowRuntimeKit
+ * @syscap SystemCapability.Resourceschedule.Ffrt.Core
+ * @since 15
+ * @version 1.0
+ */
+
+#ifndef FFRT_API_C_SHARED_MUTEX_H
+#define FFRT_API_C_SHARED_MUTEX_H
+
+#include "type_def_ext.h"
+
+/**
+ * @brief Initializes a rwlock.
+ *
+ * @param rwlock Indicates a pointer to the rwlock.
+ * @param attr Indicates a pointer to the rwlock attribute.
+ * @return Returns ffrt_success if the rwlock is initialized;
+ returns ffrt_error_inval otherwise.
+ * @since 15
+ * @version 1.0
+ */
+FFRT_C_API int ffrt_rwlock_init(ffrt_rwlock_t* rwlock, const ffrt_rwlockattr_t* attr);
+
+/**
+ * @brief Locks a write lock.
+ *
+ * @param rwlock Indicates a pointer to the rwlock.
+ * @return Returns ffrt_success if the rwlock is locked;
+ returns ffrt_error_inval or blocks the calling thread otherwise.
+ * @since 15
+ * @version 1.0
+ */
+FFRT_C_API int ffrt_rwlock_wrlock(ffrt_rwlock_t* rwlock);
+
+/**
+ * @brief Attempts to lock a write lock.
+ *
+ * @param rwlock Indicates a pointer to the rwlock.
+ * @return Returns ffrt_success if the rwlock is locked;
+ returns ffrt_error_inval or ffrt_error_busy otherwise.
+ * @since 15
+ * @version 1.0
+ */
+FFRT_C_API int ffrt_rwlock_trywrlock(ffrt_rwlock_t* rwlock);
+
+/**
+ * @brief Locks a read lock.
+ *
+ * @param rwlock Indicates a pointer to the rwlock.
+ * @return Returns ffrt_success if the rwlock is locked;
+ returns ffrt_error_inval or blocks the calling thread otherwise.
+ * @since 15
+ * @version 1.0
+ */
+FFRT_C_API int ffrt_rwlock_rdlock(ffrt_rwlock_t* rwlock);
+
+/**
+ * @brief Attempts to lock a read lock.
+ *
+ * @param rwlock Indicates a pointer to the rwlock.
+ * @return Returns ffrt_success if the rwlock is locked;
+ returns ffrt_error_inval or ffrt_error_busy otherwise.
+ * @since 15
+ * @version 1.0
+ */
+FFRT_C_API int ffrt_rwlock_tryrdlock(ffrt_rwlock_t* rwlock);
+
+/**
+ * @brief Unlocks a rwlock.
+ *
+ * @param rwlock Indicates a pointer to the rwlock.
+ * @return Returns ffrt_success if the rwlock is unlocked;
+ returns ffrt_error_inval otherwise.
+ * @since 15
+ * @version 1.0
+ */
+FFRT_C_API int ffrt_rwlock_unlock(ffrt_rwlock_t* rwlock);
+
+/**
+ * @brief Destroys a rwlock.
+ *
+ * @param rwlock Indicates a pointer to the rwlock.
+ * @return Returns ffrt_success if the rwlock is destroyed;
+ returns ffrt_error_inval otherwise.
+ * @since 15
+ * @version 1.0
+ */
+FFRT_C_API int ffrt_rwlock_destroy(ffrt_rwlock_t* rwlock);
+
+#endif // FFRT_API_C_SHARED_MUTEX_H
+/** @} */
\ No newline at end of file