摘要: 网络上流传一个面试题,说如何编程让CPU的使用率按照正弦方式变化 代码如下(运行环境Linux): #include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> int main(int argc,char* a 阅读全文
posted @ 2018-07-09 22:46 积跬步,致千里 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 网络上所有资料都说epoll是高并发、单线程、IO重叠服用的首选架构,比select和poll性能都要好,特别是在有大量不活跃连接的情况下。具体原理就不阐述了,下面说说使用。 具有有三个函数: #include <sys/epoll.h> 1、int epoll_create ( int size 阅读全文
posted @ 2018-07-08 13:30 积跬步,致千里 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 看了APUE的chapter15,只重点看了15.10,学习了posix信号量。Posix信号量比起xsi信号量的优点是性能更好,在Linux3.2.0平台上性能提升很大。其中命名信号量使用方法如下。 1、 头文件#include <semaphore.h> 2、 函数: (1)sem_t* sem 阅读全文
posted @ 2018-06-27 19:49 积跬步,致千里 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 学习了apue3rd的第11章,主要讲的是多线程编程。因为线程共享进程的资源比如堆和全局变量,多线程编程最重要的是,使用各种锁进行线程同步。 线程编程首先要学习的三个函数如下: #include <pthread.h> int pthread_create(pthread_t* tidp, cons 阅读全文
posted @ 2018-06-27 19:41 积跬步,致千里 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 看了Linux程序设计4中文版,学习了多线程编程和socket编程。本文的程序参考自Linux程序设计4的第15章。 设计了一个客户端程序,一个服务端程序。使用TCP协议进行数据传输。 客户端进程创建了一个客户端使用的socket,一个socket地址结构体。设置这个socket地址结构体的端口和地 阅读全文
posted @ 2018-06-27 19:35 积跬步,致千里 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 线程和进程之间的联系和区别: 线程拥有自己的线程id,一组寄存器值,调度优先级和策略,线程栈,除此以外,线程共享进程的所有资源,如堆、文件描述符、进程的代码段、全局变量区(静态局部变量、全局变量)。进程是系统资源分配的基本单位,线程是CPU调度的基本单位。 在只有一个线程的情况下,进程和线程非常相似 阅读全文
posted @ 2018-06-27 19:32 积跬步,致千里 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 关于C语言变量是否需要初始化的问题。以前西北工业大学的C语言老师说的是,需要初始化,如果不初始化就使用的话,变量的值是以前遗留在内存中的,是不确定的(这只是针对局部变量的)。C语言全局变量如果没有初始化的话,编译器会他们初始化为0.局部变量则不改动。自己实际测试,在微软的vs2008或2010环境下 阅读全文
posted @ 2018-06-27 19:24 积跬步,致千里 阅读(579) 评论(0) 推荐(0) 编辑
摘要: C/C++函数调用的开销:1、函数传递参数的拷贝开销;2、上一个调用函数的上下文的保存。对于传递参数的开销而言,传递的参数越多开销就越大;对于保存当前程序上下文所花费的开销而言,函数越复杂需要花费的开销就越大。说说如何避免开销。1、 使用inline函数,inline会在函数调用处展开。2、 使用宏取代非常简单短且调用频繁的函数,在查看Linux内核代码的时候,你会发现非常多的宏。因为内核代码非常注重速度,使用宏是非常有必要的。我们可以模仿内核代码的写法,在自己的工程代码中使用一些“宏函数“。3、 减少递归函数的使用。递归函数是没有办法inline展开的。且递归的嵌套层数可能很深,时间和空间的 阅读全文
posted @ 2014-03-10 11:14 积跬步,致千里 阅读(3379) 评论(0) 推荐(0) 编辑