线程同步在现实生活中,有些东西就必须是按顺序执行的,只有我完成了以后,你才能在我的劳动成果上接着干;不能我还没有完成,你就开始干活了。这就是线程同步最直白的解释了。在进行程序设计时,亦是如此。线程同步,同步的是什么?它同步的是对共享资源(内存区域,公共变量等)或者临界区域的访问。有的时候,这些共享 ...
分类:
编程语言 时间:
2015-01-07 14:30:27
阅读次数:
135
下面的 C 程序分配了1024字节的内存,然后从分配的内存以外的区域读取数据,在分配内存尾部之后写数据,最后将该内存区域变得不可访问。
#include
#include
int main()
{
char *ptr = (char *)malloc( 1024 );
char ch;
//Uninitialized read
ch = ptr[1024];...
分类:
编程语言 时间:
2014-12-28 18:17:49
阅读次数:
387
Oracle数据库的启动-nomount状态深入解析通常所说的Oracle Server主要由两个部分组成:Instance和Database。Instance是指一组后台进程(在Windows上是一组线程)和一块共享内存区域;Database是指存储在磁盘上的一组物理文件。通过Instance与D...
分类:
数据库 时间:
2014-12-28 00:21:40
阅读次数:
284
1、基本概念程序运行期间,每个函数都会占用一段连续的内存空间。而函数名就是该函数所占内存区域的起始地址(也称“入口地址”)。我们可以将函数的入口地址赋给一个指针变量,使该指针变量指向该函数。然后通过指针变量就可以调用这个函数。这种指向函数的指针变量称为“函数指针”。2、指针变量的定义形式返回值类型名...
分类:
其他好文 时间:
2014-12-23 21:02:43
阅读次数:
117
指针和引用的区别
指针指向一块内存,它的内容是指向内存的地址;引用是某内存的别名
引用使用是无需解引用,指针需解引用
引用不能为空,指针可以为空
引用在定义是被初始化一次,之后不可变;指针可变
程序为指针变量分配内存区域,而引用不需要分配内存区域
new和malloc的区别,free和delete的区别
malloc与free是C++/C语言的标准库函数,...
分类:
编程语言 时间:
2014-12-22 21:23:13
阅读次数:
203
在一台电脑上的内存存储区域分为6种:1.寄存器: 寄存器是运行最快的,寄存器在系统中早就已经存在了,寄存器的数量是有限的,被严格要求 Java程序员不能显示的调用寄存器2.栈: 栈中存储着基本数据类型的变量以及引用变量 栈中元素在超出其生命周期后会自动销毁 栈中元素一经创建,系统会为其分配...
分类:
编程语言 时间:
2014-12-17 22:27:51
阅读次数:
180
看了java虚拟机规范,在JVM内存区域有点混乱,整理一个框架图来帮助理解,模拟一个类的运行过程,关注每个区域存放哪些数据,各个区域是怎么交互的。具体各个区域的介绍,以及运行过程,园区不乏优秀的文章。推荐一篇,写得很不错:http://www.cnblogs.com/hellocsl/p/39697...
分类:
其他好文 时间:
2014-12-17 12:16:52
阅读次数:
201
1. 程序计数器现在多线程越来越普遍了,但是对于单核处理器而言,同一个时刻只能够执行一行指令。多个线程的同时执行,实际上是通过线程切换来实现的。一种简单的方式就是,每个线程执行一段时间后,就切换到另外一个线程去执行。当线程A执行到某行字节码指令时被挂起,这个时候切换到线程B执行一段时间后,又需要切换...
分类:
其他好文 时间:
2014-12-14 11:57:59
阅读次数:
132
今天Mayuyu遇到了两个比较有意思的函数,即mmap()和fmemeopen()函数。
先来看看mmap()函数,本函数的头文件为#include 和#include 。函数原型如下
mmap()是用来将某个文件内容映射到内存中,对该内存区域的取值即是直接对该文件内容的读写。...
分类:
其他好文 时间:
2014-12-10 16:24:14
阅读次数:
347
linux内核中内存相关的操作函数1、kmalloc()/kfree()static __always_inline void *kmalloc(size_t size, gfp_t flags)内核空间申请指定大小的内存区域,返回内核空间虚拟地址。在函数实现中,如果申请的内存空间较大的话,会从bu...
分类:
系统相关 时间:
2014-12-08 21:08:09
阅读次数:
340