互斥由来以及相关概念
运行如下代码可以看到,这里是一个抢票的逻辑,让五个线程同时去抢100张票,如果对线程不加以限制的话,会产生票会变为负数也就是过度抢票的情况。
int tickets=100;
void* route(void* args)
{
char* id=(char*)args;
while(1)
{
if(tickets > 0)
{
usleep(1000);
printf("我是线程%s,正在进行抢票,票还剩%d张\n",id,tickets);
tickets--;
}
else
{
printf("票已经抢完了\n");
break;
}
}
}
int main()
{
pthread_t t1, t2, t3, t4;
pthread_create(&t1, NULL, route, (void*)"threa
本文介绍了Linux线程互斥的概念,通过抢票逻辑阐述了互斥的必要性,防止过度访问临界资源。讲解了互斥量的初始化、销毁、加锁和解锁操作,以及使用互斥量解决并发问题时可能遇到的线程饥饿和死锁问题。最后,讨论了避免死锁的策略。
最低0.47元/天 解锁文章
417

被折叠的 条评论
为什么被折叠?



