摘要:在Windows环境下针对多线程同步与互斥操作的支持,主要包括四种方式:临界区(CriticalSection)、互斥对象(Mutex)、信号量(Semaphore)、事件对象(Event)。下面分别针对这四种方式作说明:(1)临界区(CriticalSection) 每个进程中访问临界资源的...
阅读全文
随笔分类 - 编程技巧
记录一些编程实战技术,例如多线程技术、WTL、并行计算等
摘要:本文参考文章:多线程的那点事儿(之数据互斥) 在多线程存在的环境中,除了堆栈中的临时数据之外,所有的数据都是共享的。如果我们需要线程之间正确地运行,那么务必需要保证公共数据的执行和计算是正确的。简单一点说,就是保证数据在执行的时候必须是互斥的。否则,如果两个或者多个线程在同一时刻对数据进行了操作,...
阅读全文
摘要:一、什么是线程 线程(thread)是进程中某个单一顺序的控制流。也被称为轻量进程(lightweight processes)。计算机科学术语,指运行中的程序的调度单位。 一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派...
阅读全文
摘要:在上一篇文章中介绍了并行计算的基础概念,也顺便介绍了OpenMP。 OpenMp提供了对于并行描述的高层抽象,降低了并行编程的难度和复杂度,这样程序员可以把更多的精力投入到并行算法本身,而非其具体实现细节。对基于数据分集的多线程程序设计,OpenMP是一个很好的选择。同时,使用OpenMP也提供了更
阅读全文
摘要:并行计算(Parallel Computing)是指同时使用多种计算资源解决计算问题的过程,是提高计算机系统计算速度和处理能力的一种有效手段。它的基本思想是用多个处理器来协同求解同一问题,即将被求解的问题分解成若干个部分,各部分均由一个独立的处理机来并行计算。并行计算系统既可以是专门设计的、含有多个
阅读全文
摘要:今天在Linux环境下写了一个最简单的TCP Client程序,没想到Linux环境下的头文件竟然这么分散,让我这样的菜鸟很是郁闷啊。编译成功的代码如下: 看来我在Windows下待习惯了,我以为这么简单的socket编程只需要一个#include <sys/socket.h>就行了呢!没想到这个头
阅读全文
摘要:在我的昨天的博文《[原]我在Windows环境下的首个Libevent测试实例》中介绍了在Windows环境下如何编译一个echo server例子。今天我又试了一下在Linux环境中编译这个例子,遇到了一些问题,学习到了很多知识。这里也顺便记一下,增强一下理解。直接上代码: 1 #include
阅读全文
摘要:libevent对Windows环境也有很好的支持,不过初次学习和编译libevent简单实例,总是有一些陌生感的,只有成功编译并测试了一个实例,才会有恍然大悟的感觉。下面将要讲到的一个实例是我从网上抄过来的,原创文章地址为:http://www.felix021.com/blog/read.php
阅读全文
摘要:libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。著名分布式缓存软件memcached也是libevent based,而且libevent在使用上可以做到跨平台,而且根据libevent
阅读全文
摘要:以下内容大部分来自: http://blog.csdn.net/tjvictor/article/details/4360030 部分内容出自互联网,实验结果为亲测。 最近自己开发一个向数据库中插入大量历史数据的函数库,需要解决一个大数据量插入的效率问题。不用分析,我知道如果采取逐条数据插入的方式,
阅读全文
摘要:最近需要设计一个分布式的历史数据存储系统。在设计历史数据表的时候发现,系统中对象的唯一标示符似乎只能是对象名称,虽然说也有一个唯一的ObjectID可以做标识符,不过在每一个对象中却没有单独存储自己的ID号。怎么办呢?如果用字符串作为数据表的主键,很显然是效率很低的。我想到了一种方式:应该有一种算法
阅读全文

浙公网安备 33010602011771号