全球旧事资料 分类
要对它进行初始化对于静态分配的互斥量可以把它设置为默认的mutex对象PTHREAD_MUTEX_INITIALIZER对于动态分配的互斥量在申请内存malloc之后通过pthread_mutex_i
it进行初始化并且在释放内存free前需要调用pthread_mutex_destroy。i
cludepthreadh
fi
tpthread_mutex_i
itpthread_mutex_tmutexco
stpthread_mutexattr_tattri
tpthread_mutex_destroypthread_mutex_tmutex对共享资源的访问要使用互斥量进行加锁如果互斥量已经上了锁调用线程会阻塞直到互斥量被解锁。i
tpthread_mutex_lockpthread_mutex_tmutexi
tpthread_mutex_trylockpthread_mutex_tmutex返回值成功则返回0出错则返回错误编号。trylock是非阻塞调用模式如果互斥量没被锁住trylock函数将对互斥量加锁并获得对共享资源的访问权限如果互斥量被锁住了trylock函数将不会阻塞等待而直接返回EBUSY表示共享资源处于忙状态。在操作完成后,必须给互斥量解锁,也就是前面所说的释放。这样其他等待该锁的线程才有机会获得该锁,否则其他线程将会永远阻塞。i
tpthread_mutex_u
lockpthread_mutex_tmutex互斥量PK信号量Mutex是一把钥匙,一个人拿了就可进入一个房间,出来的时候把钥匙交给队列的第一个。Semaphore是一件可以容纳N人的房间,如果人不满就可以进去,如果人满了,就要等待有人出来。对于N1的情况,称为bi
arysemaphore。Bi
arysemaphore与Mutex的差异:1mutex要由获得锁的线程来释放(谁获得,谁释放)。而semaphore可以由其它线程释放2初始状态可能不一样:mutex的初始值是1而semaphore的初始值可能是0(或者为1)。系统调用创建i
tcreatco
stcharfile
amemode_tmode
ffile
ame要创建的文件名包含路径,缺省为当前路径mode创建模式常见创建模式:S_IRUSR可读S_IWUSR可写S_IXUSR可执行S_IRWXU可读、写、执行除了可以使用上述宏以外,还可以直接使用数字来表示文件的访问权限:可执行1可写2可读4上述值的和,如可写可读6无任何权限0系统调用打开i
tope
co
stcharpath
amei
tflagsi
tope
co
stcharpath
amei
tflagsmode_tmodepath
ame:要打开的文件名包含路径,缺省为当前路径flags:打开标志常见的打开标志:O_RDONLY只读方式打开O_WRONLY只写方式打开O_RDWR读写方式打开O_APPEND追加方式打开O_CREAT创建一个文件O_NOBLOCK非阻塞方式打开如果使用了O_CREATE标志,则使用的函数是:i
tope
co
stcharpath
amei
tflagsmode_tmode这时需要指定mode来表示文件的访问权限。系统调用关闭当我们操作完文件以后需要关闭文件:i
tclosei
tfdfd文件描述符,来源?系统调用读i
treadi
tfdco
stvoidbufr
好听全球资料 返回顶部