linux编程
文章平均质量分 74
hooleeUCAS
用心思考,用手创造。
展开
-
MPI程序的任务分解方法
用MPI编写并行程序时,任务分解是很重要的一部分,如何把T个任务(T块数据,T行矩阵等)分给P个进程,实现负载均衡,是需要好好考量的问题。分解任务时需要解决两个问题:1.给出一个进程p,如何得知要处理的任务是哪些2.给出一个任务t,如何得知它是由哪个进程处理的(这里的p和t都是从0开始计数。)一个好的任务分配,应该能够保证这两种计算都能高效完成。下面讨论三种分配方式。这里只讨论T>原创 2014-04-30 20:40:15 · 3163 阅读 · 0 评论 -
linux alarm函数使用
alarm函数讲解unsigned int alarm(unsigned int seconds)函数函数作用:在seconds秒之后向调用alarm()的进程发送一个SIGALRM信号。1.如果指定seconds是0,表示取消正在等待的alarm,如果在等待时间结束之前有其它事件到来,alarm也将被取消。2.对于一个进程而言,只有最近的依次alarm()调用是有效的。alarm原创 2014-04-14 21:53:45 · 3483 阅读 · 0 评论 -
C语言socket send()数据缓存问题
send()函数默认情况下会使用Nagle算法,Nagle算法通过将未确认的数据存入缓冲区直到积攒到一定数量一起发送的方法,来减少主机发送零碎小数据包的数目。所以如果send()函数发送数据过快的话,该算法会将一些数据打包后统一发出去。如果不了接这种情况,接收端采会遇到看似很奇怪的问题,比如成功recv()的次数与成功send()的次数不相等,在这中情况下,接收端可以通过recv()的返回值是否为原创 2014-05-02 16:57:31 · 4226 阅读 · 0 评论 -
linux下的getch模拟(无回显读取字符)
我们知道getchar()函数可以读取一个字符,但是必须在按下回车键之后字符才会从缓冲区送给程序。如何在linux终端里实现无回显读取字符呢?下面的代码给出了一个简单有效的实现。#include#include#includeint main(){ int input; struct termios save, current; tcgetattr(0, &save);// 得到原创 2014-04-02 17:42:11 · 3853 阅读 · 0 评论 -
htop源码中的Hashtable
这里的Hashtable其实是hashmap,实现的是int型到void*的映射。Hashtable结构的简单演示如下图:原创 2014-04-03 17:50:28 · 684 阅读 · 0 评论 -
一个linux控制台程序demo
这个demo可以一边处理业务一边跟用交互原创 2014-04-03 15:32:15 · 4158 阅读 · 1 评论 -
C语言面向对象编程
面向对象编程是一种思想,只要运用这种思想,用C语言也能写出面向对象的程序。我们可以把C语言的结构体看成是面向对象语言中的类,结构体里可以有属性和成员函数(函数指针)。这样就能用C语言写出面向对象的序了。代码如下:#include#include// 定义两个函数类型typedef void(*SetFunc)(void*, int, int, char*);typedef voi原创 2014-04-03 17:13:59 · 704 阅读 · 0 评论 -
通过互斥锁实现数组多线程互斥插入示例
本例演示了多线程互斥的向StringBuffer中插入字符的情况,能够保证插入字符的完整性(不重复,也不丢失),但是不保证顺序。需要注意的几个地方:pthread多线程程序编译的时候要加入-lpthread链接库,本例的编译命令可以是$ gcc main.c -lpthread为了能够通过jion函数等待所有线程结束,需要通过threadsHold[]数组记录每个线程的线程号由于p原创 2014-04-25 14:23:22 · 1978 阅读 · 0 评论 -
C语言socket UDP广播的发送和接收示例
server.c通过UDP广播的形式向网段的指定端口发送广播信息client.c绑定到指定端口,并阻塞接收广播内容然后打印出来程序非常简单,不过有一点需要注意,那就是setsockopt()函数的使用。使用不当很可能会出问题。通过SO_REUSEADDR选项可以实现端口号的重用,SO_BROADCAST选项表示要发送的是广播信息,optval参数要给合理的初始值(这里是1),否则很可能会发原创 2014-04-28 22:14:07 · 20017 阅读 · 2 评论