我是c编程的新手。到目前为止,我只发现pthread_mutex_lock
可以使代码区域只由一个线程运行。是否有其他方法可以实现锁定?或者其他每种方法都使用pthread_mutex_lock
函数?
答案 0 :(得分:4)
线程仅通过C11引入ISO C标准,C11是标准的最新版本,因此不一定广泛支持。
您需要查看threads.h
和mtx_*
函数以了解相关内容。
在此之前,pthreads
可能是你最好的选择,虽然不是标准C (a),但它的支持并未强制执行。
例如,Windows使用CreateThread
等函数自己进行线程处理。
但是,有许多第三方产品,例如pthreads-win32,旨在为Windows提供pthreads支持,以协助从POSIX兼容的操作系统移植应用程序。
(a)它是 POSIX标准(IEEE 1003.1的一部分),因此对某些人来说可能已经足够了。
答案 1 :(得分:2)
无法锁定c
语言。操作系统可能提供对锁定的支持(不考虑语言),pthreads
等库可以利用操作系统服务,但这不在语言之下。 (通过包含,其他语言内置了本机锁定,例如通过Java的synchronized
关键字。)