学海无涯之Linux信号量 sem_t/epoll/mutex

1 篇文章 0 订阅
1 篇文章 0 订阅
本文探讨了Linux信号量sem_t的深入使用,包括sem_wait, sem_timedwait和sem_trywait的区别,以及如何与epoll结合优化并发处理。通过实例展示了semaphore在进程间通信和线程同步中的应用,以及为何Windows中的WaitForSingleObject复杂。
摘要由CSDN通过智能技术生成

Linux信号量 sem

#include <semaphore.h>
static sem_t sem_out[16];
static sem_t sem_in[16];
static struct timespec ts;

int Exxxx_Open(unsigned short mc,short ip3,short ip4)
{
	.....
	pthread_create(&tid[mc],nullptr,ProcCtrlRecv0,&mc );
	sem_init(&sem_out[mc],0,0);
    sem_init(&sem_in[mc],0,0);

}

int Exxxx_Close(unsigned short mc)
{
	......
    sem_close(&sem_out[mc]);
    sem_close(&sem_in[mc]);
	.......
}

int Send_to(unsigned char mc,unsigned char com)
{
	sendto( sockfd[mc] , (const char *)&command[mc][0], 8, 0, (sockaddr*)&addrCtrl[mc], sizeof(sockaddr));			     
    sem_post(&sem_out[mc]);
    clock_gettime(CLOCK_REALTIME,&ts);
    ts.tv_sec +=1;
    ret=sem_timedwait(&sem_in[mc],&ts);
    ......
}

void* ProcCtrlRecv0(void *args)
{
	    while(m_bNoExit[mc])
   		 {
   		 	.......
   		 	sem_wait(&sem_out[mc]);
         	nRet = recvfrom(sockfd[mc], InBuf, 8,0,(struct sockaddr*)&addrCtrl[mc], &addrServer_length);
			......
			sem_post(&sem_in[mc]);
			......
   		 }
}

以下摘录:
windows的WaitForSingleObject这个接口超级混乱,
等线程用 pthread_join,
等semphore用 sem_wait
等mutex用 pthread_mutex_lock
windows偏要做大而全, 让人很无奈.

以下引用:

Linux信号量 sem_t简介
函数sem_wait, sem_timedwait, sem_trywait比较
sem_wait()和sem_timedwait()区别
sem_timedwait() 简单用法

epoll

epoll简介(一)
epoll_create和epoll_create1
一个简单的基于epoll的udp接收

互斥锁

linux下用互斥锁
#include <pthread.h>
int pthread_mutexattr_init(pthread_mutexattr_t *attr); /初始化函数/
int pthread_mutexattr_destroy(pthread_mutexattr_t *attr);/去初始化函数/
int pthread_mutex_lock(pthread_mutexattr_t *attr)/加锁/
int pthread_mutex_unlock(pthread_mutexattr_t *attr)/解锁/

linux线程互斥量pthread_mutex_t使用简介
互斥锁pthread_mutex_init()函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值