上一页 1 ··· 3 4 5 6 7 8 下一页
摘要: 引用自雪中飞的博客http://www.cnblogs.com/zzx1045917067/archive/2012/11/14/2770031.html 阅读全文
posted @ 2012-11-14 16:14 梓涵VV 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 算术和逻辑指令ADCADDANDBICEORMOVMVNORRRSBRSCSBCSUB指令格式ADC : 带进位的加法(Addition with Carry)ADC{条件}{S} <dest>, <op 1>, <op 2> dest = op_1 + op_2 + carryADC 将把两个操作数加起来,并把结果放置到目的寄存器中。它使用一个进位标志位,这样就可以做比 32 位大的加法。下列例子将加两个 128 位的数。128 位结果: 寄存器 0、1、2、和 3第一个 128 位数: 寄存器 4、5、6、和 7第二个 128 位数: 寄存器 8、9、1 阅读全文
posted @ 2012-11-12 14:03 梓涵VV 阅读(992) 评论(0) 推荐(0) 编辑
摘要: 今天学习多线程的第二个例子是取消线程示例,在此程序中,主线程使用pthread_cancel()函数来取消线程。由于子线程首先调用pthread_setcancelstate()函数设置了线程的取消状态为PTHREAD_CANCEL_DISABLE,因此,不可取消子线程,主线程处于等待状态,经过一段时间后,子线程调用pthread_setcancelstate()函数设置了线程的取消状态为PTHREAD_CANCEL_ENABLE,允许取消,从而使主线程能够取消子线程。代码如下:#include<iostream>#include<pthread.h>using nam 阅读全文
posted @ 2012-11-08 10:50 梓涵VV 阅读(1896) 评论(0) 推荐(0) 编辑
摘要: msgget()函数被用来创建新的消息队列或获取已有的消息队列。其函数定义如下:系统调用: msgget()函数声明: int msgget ( key_t key, int msgflg )返回值: message queue identifier on success-1 on error: errno = EACCESS (permission denied)EEXIST (Queue exists, cannot create)EIDRM (Queue is marked for deletion)ENOENT (Queue does not exist)ENOMEM (Not eno 阅读全文
posted @ 2012-11-07 11:46 梓涵VV 阅读(800) 评论(0) 推荐(0) 编辑
摘要: msgrcv()函数被用来从消息队列中取出消息。它在linux/msg.h中的定义是这样的:系统调用: msgrcv()函数声明: int msgrcv ( int msqid, struct msgbuf *msgp, int msgsz, longmtype,int msgflg )返回值: Number of bytes copied into message buffer-1 on error: errno = E2BIG (Message length is greater thanmsgsz,no MSG_NOERROR)EACCES (No read permission)EFA 阅读全文
posted @ 2012-11-07 11:45 梓涵VV 阅读(3081) 评论(0) 推荐(1) 编辑
摘要: msgsnd()函数是用来向消息队列发送消息的。在linux/msg.h 它的函数定义是这样的:系统调用: msgsnd()函数声明: int msgsnd ( int msqid, struct msgbuf *msgp, int msgsz, int msgflg )返回值: 0 on success-1 on error: errno = EAGAIN (queue is full, and IPC_NOWAIT was asserted)EACCES (permission denied, no write permission)EFAULT (msgp address isn' 阅读全文
posted @ 2012-11-07 11:44 梓涵VV 阅读(1241) 评论(0) 推荐(0) 编辑
摘要: fork()与vfock()都是创建一个进程,那他们有什么区别呢?总结有以下三点区别: 1. fork ():子进程拷贝父进程的数据段,代码段 vfork( ):子进程与父进程共享数据段 2. fork ()父子进程的执行次序不确定 vfork 保证子进程先运行,在调用exec 或exit 之前与父进程数据是共享的,在它调用exec 或exit 之后父进程才可能被调度运行。 3. vfork ()保证子进程先运行,在她调用exec 或exit 之后父进程才可能被调度运行。如果在 调用这两个函数之前子进程依赖于父进程的进一步动作,则会导致死锁。 下面通过几个例子加以说明: 第一:子进程拷贝父.. 阅读全文
posted @ 2012-11-06 11:49 梓涵VV 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 创建一个新进程的方法只有由某个已存在的进程调用fork()或vfork(),当然某些进程如init等是作为系统启动的一部风而被内核创建的。1.fork函数介绍#include sys/types.h>#include unistd.h>pid_t fork (void );正确返回:父进程中返回子进程的进程号;子进程中返回0;(单调用双返回函数)错误返回:-1;子进程是父进程的一个拷贝。具体说,子进程从父进程那得到了数据段和堆栈段,但不是与父进程共享而是单独分配内存。fork函数返回后,子进程和父进程都是从fork函数的下一条语句开始执行。由于子进程与父进程的运行是无关的,父进程可 阅读全文
posted @ 2012-11-06 11:44 梓涵VV 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 简介gcc and g++现在是gnu中最主要和最流行的c & c++编译器 .gcc/g++在执行编译工作的时候,总共需要以下几步:1.预处理,生成.i的文件[预处理器cpp]2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]4.连接目标代码,生成可执行程序[链接器ld]//www.software8.co/wztgGCC能够处理的后缀有:a. *.c *.C (C语言)b. *.cxx *.cc (C++语言)c. *.m (面向对象的C)d. *.i (预处理后的C语言源文件)e. *.ii (预处理 阅读全文
posted @ 2012-11-05 20:14 梓涵VV 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 1、c++变量初始化规则内置类型变量是否初始化决定于变量的定义位置,在函数体外定义的变量都自动初始化为0,函数体内定义的变量都不进行自动初始化。类类型变量的初始化,类通过定义一个或多个构造函数来控制类对对象的初始化,如果定义某个类的变量时没有提供初始化式,这个类就通过默认构造函数来实现。2、引用(reference)与指针(pointer)引用就是对象的另一个名字,通过在变量前添加&符号来定义。定义时必须初始化:int ival=1024;int &refval= ival;//OK:refval refers to ivalint &refval;//error:a 阅读全文
posted @ 2012-11-05 20:11 梓涵VV 阅读(156) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 下一页