一些程序员细节问题

1. linux在调用pthread_mutex_lock的时候得到信号产生软件中断,信号处理函数结束后,pthread_mutex_lock是被自动重入还是会返回eintr错误?


答案在这里:

http://pubs.opengroup.org/onlinepubs/007908799/xsh/pthread_mutex_lock.html

pthread_mutex_lock不会返回eintr错误,而是当做信号从来没有发生而自动重入


2. 同步send和异步send有什么区别?

send函数绝对无法保证数据准确的到达对端,其阻塞和非阻塞体现在对端是否有足够的缓冲区时。

如果send数据无法到达对端会超时重传,包的发送规则有nagle算法(ack确认包黏住下一个发送包)和非nagle算法。


3. pthread_mutex_t是内核对象么?

pthread_mutex_t实际是一个futex,跟信号量一样都是内核和用户空间混合对象。其原理通过共享内存实现,每次使用futex的时候会在用户态获取其状态,如果没有竞争发生,则直接修改futex数据。如果有竞争发生,会调用内核api执行sleep,wakeup等操作。


4. mysql api是同步还是异步?效率如何?

mysql api是同步函数,使用socket通讯,类似于rpc call,每次直到执行结果返回后才完成函数的执行,所以尽量把慢查询和频繁数据操作提取到另一个线程去做,尽量不要影响主线程的执行效率!

mysql api对一个只有一条数据的表执行update操作(mysql_query),大概每秒可以执行5000-10000次左右。


5. udp/tcp send是很快的,主要是往操作系统复制数据,1亿次sendto只要2秒左右


6. 分布式系统具有软硬件平台分布性、高稳定性、高可用性、高可扩展性、高可管理性、高并发性及数据一致性等多种特性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值