我是c编程的新手。到目前为止,我只发现pthread_mutex_lock
可以使代码区域仅由一个线程运行。还有其他方法可以实现锁定吗?还是其他所有做锁的方法还在使用pthread_mutex_lock
功能?
线程仅在 C11 中引入 ISO C 标准,这是该标准的较新版本,因此不一定得到广泛支持。
您需要研究threads.h
和mtx_*
函数才能理解这一点。
在此之前,pthreads
可能是您最好的选择,因为它的广泛实现,尽管它不是标准的 C (a),但它的支持不是强制性的。
例如,Windows有自己的线程方式,使用CreateThread
等函数。
但是,有各种第三方产品(例如 pthreads-win32)旨在为 Windows 提供 pthreads 支持,以帮助从符合 POSIX 的操作系统移植应用程序。
(
a)它是一个POSIX标准(IEEE 1003.1的一部分),所以对某些人来说可能已经足够了。
无法锁定c
语言。操作系统可能会提供对锁定的支持(不考虑语言),并且pthreads
等库可以利用操作系统服务,但这在语言旁边。(通过 contast,其他语言内置了本机锁定,例如通过 Java 的 synchronized
关键字。