最近在看《算法导论》,看到多线程算法这章中,有一个parallelfor循环的例子,如下:parallelfori=1tonparallelforj=1toncij=0fork=1toncij=cij+aik+bkj书上说的时间复杂度为O(lgn)+O(lgn)+O(n)=O(n);也就是说一个pa...
分类:
其他好文 时间:
2014-07-16 18:18:16
阅读次数:
181
有一道这种面试题:开启一个子线程和主线程同一时候运行,子线程输出10次后接着主线程输出100次,如此重复50次。先看以下代码:package com.maso.test;/** * * @author Administrator * 两个线程,当中是一个主线程,第一个线程先运行输出10次,主线程接....
分类:
移动开发 时间:
2014-07-16 18:06:31
阅读次数:
324
理解程序、进程、线程三者之间的区别:简而言之,一个程序至少有一个进程,一个进程至少有一个线程进程就是在内存中运行的程序(即运行着的程序);一个进程一般只有一个线程,一个进程可以包含多个线程(多线程编程);使用异步编程的简单机制一:异步委托 委托类型的BeginInvoke和EndInvoke方法。 ...
分类:
其他好文 时间:
2014-07-16 17:36:58
阅读次数:
182
kafka客户端开发,如果进行多线程并行消费数据。...
分类:
编程语言 时间:
2014-07-16 17:26:29
阅读次数:
329
Exchanger是一个针对线程可以结对交换元素的同步器。每条线程把某个对象作为参数调用exchange方法,与伙伴线程进行匹配,然后再函数返回的时接收伙伴的对象。另外,Exchanger内部实现采用的是无锁算法,能够大大提高多线程竞争下的吞吐量以及性能。
算法实现
基本方法是维持一个“槽”(slot),这个槽是保持交换对象的结点的引用,同时也是一个等待填满的“洞”(hole)。如...
分类:
移动开发 时间:
2014-07-16 17:23:36
阅读次数:
484
VC和gcc不同,不能保证静态变量的线程安全性。这就给我们的程序带来了很大的安全隐患和诸多不便。这一点应该引起我们的重视!尤其是在构造函数耗时比较长的时候,很可能给程序带来意想不到的结果。本文从测试代码开始,逐步分析原理,最后给出解决方案。
多线程状态下,VC不能保证在使用函数的静态变量的时候,它的构造函数已经被执行完毕,下面是一段测试代码:
class TestStatic...
分类:
编程语言 时间:
2014-07-16 16:20:55
阅读次数:
261
首先让我们来看看IIS里面的这2个数字:最大并发连接数,队列长度。先说这2个数字在哪里看。最大并发连接数:在IIS中选中一个网站,右键网站名称,在右键菜单中找到并点击【管理网站】->【高级设置】。打开对话框如下图:队列长度:在IIS中选中【应用程序池】,在应用程序池列表中,右键你想查看的,在右键菜单...
分类:
编程语言 时间:
2014-07-16 15:59:53
阅读次数:
166
一、线程理论基础使用线程原因:1、比进程更加节俭。线程是轻量级的。进程:代码共享,数据拷贝。线程所有都是共享的。2、通信简单很多3、多线程程序是一种多任务、并发的工作机制。还有如下优点:使多CPU系统更加有效。操作系统会保证当线程数不大于CPU数目时,不同线程运行于不同的CPU上。改善程序结构:一个...
分类:
编程语言 时间:
2014-07-16 15:09:35
阅读次数:
266
Semaphore是一个计数的信号量。从概念上来说,信号量维持一组许可(permits)。acquire方法在必须的时候都会阻塞直到有一个许可可用,然后就会拿走这个许可。release方法添加一个许可,会有可能释放一个阻塞中的获取者(acquirer)。然而,Semaphore没有使用真实的许可对象,只是保持一个可用计数并且采取相应的行为。
信号量一般用于限制可以访问一些(物理上或者逻辑上)的资...
分类:
其他好文 时间:
2014-07-16 14:17:40
阅读次数:
260
1、创建线程#includeint pthread_create(pthread_t* tidp,const pthread_attr_t *attr,void*(*start_rtn)(void),void*arg)tidp:线程idattr:线程属性(通常为空)start_rtn:线程要执行的函...
分类:
编程语言 时间:
2014-07-16 14:00:08
阅读次数:
181