最新 | 最热门 | 最高评价

+0  State Threads 回调终结者

Tag: C/C++语言 | Unix/Linux | Web开发 | 程序设计 | C++ | coroutine | EDSM | IA | process | thread | Web
Leo 发于 2014年10月12日 22:48 | 点击: 3777 | 展开摘要
(感谢网友 @我的上铺叫路遥 投稿)

上回写了篇《一个“蝇量级”C语言协程库》,推荐了一下Protothreads,通过coroutine模拟了用户级别的multi-threading模型,虽然本身足够“轻”,杜绝了系统开销,但这个库本身应用场合主要是内存限制的嵌入式领域,提供原生态组件太少,使用限制太多,比如依赖其它调用产生阻塞等。

这回又替大家在开源界淘了个宝,推荐一个轻量级网络应用框架State Threads(以下简称ST),总共也就3000行C代码,跟Proto

查看全文: http://www.udpwork.com/item/13384.html

+0  Python:[Errno 32] Broken pipe 导致线程crash解决方法

Tag: 其他 | Broken Pipe | python | ThreadingHTTPServer
五竹 发于 2014年05月15日 16:31 | 点击: 7632 | 展开摘要
1       错误现象

ThreadingHTTPServer 实现的 http 服务,如果客户端在服务器返回前,主动断开连接,则服务器端会报 [Errno 32] Broken pipe 错,并导致处理线程 crash.

下面先看个例子,python 版本: 2.7

  示例代码

#!/usr/bin/env python
#!coding=utf-8

import os
import time
import socket
import threading
f

查看全文: http://www.udpwork.com/item/12251.html

+0  Java多线程程序的测试

Tag: Testing | Java | Thread Weaver | 多线程 | 测试
四火 发于 2014年05月06日 23:47 | 点击: 1814 | 展开摘要
这个问题最初来自于一封公司内部的话题探讨邮件,再加上了一些我的理解。

首先,需要明确的是,用Java通常构建多线程安全的程序“非常”困难,如果还没有体会到“非常”的话,阅读《Java Concurrency in Practice》(中文名叫做《Java并发编程实战》,在我的书单里面,我认为它基本是最好的系统介绍Java并发的书了)可能可以改变你的看法。

多线程的基础

基础是王道。对于任何一门语言都是如此,有的基础部分是和语言无关的,也有一部分是和Java语言相关的。这

查看全文: http://www.udpwork.com/item/12218.html

+0  erlang和其他语言读文件性能大比拼

Tag: Erlang探索 | Linux | 调优 | dd | file | read | thread_pool_size
Yu Feng 发于 2013年08月28日 15:25 | 点击: 1873 | 展开摘要
原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: erlang和其他语言读文件性能大比拼

百岁同学说:

今天公司技术比武,比赛题目是给一个1.1g的大文本,统计文本中词频最高的前十个词。花了两天用erlang写完了代码,但是放到公司16核的机器上这么一跑,结果不比不知道,一比吓一条。erlang写的代码执行时间花了55秒左右,同事们有的用java,有的用C,还有的用C++,用C最快一个老兄只花了2.6秒,用java的也只用了3.2秒。相比之下erlang

查看全文: http://www.udpwork.com/item/10531.html

+0  并发编程实践PPT

Tag: Java | concurrent | synchronizer | thread
longhao 发于 2012年03月01日 13:40 | 点击: 3186 | 展开摘要
    一年多前写的ppt,拿出了和大家分享。自己也顺便回忆一下里面的内容

Java并发编程培训

View more presentations from longhao.

查看全文: http://www.udpwork.com/item/6923.html

+0  C/C++多线程编程(2) – OpenMP并行计算初涉

Tag: 我的代码 | c++ | computing | openmp | parallel | threading
Xiaoxia 发于 2011年11月23日 02:47 | 点击: 2288 | 展开摘要
OpenMP是一个方便多线程计算的一个标准。现代的编译器例如GCC就自带了OpenMP的实现,但是要开启OpenMP功能,需要在编译的时候加入 -fopenmp 参数。下面是一段Hello Xiaoxia的代码来展示OpenMP的用法。

#include <iostream>
using namespace std;

int main(){
#pragma omp parallel
{
cout << "Hello

查看全文: http://www.udpwork.com/item/6362.html

+0  Java定位CPU使用100%的方法

Tag: Java | cpu100% | jstack | threaddump
longhao 发于 2011年10月27日 09:36 | 点击: 3417 | 展开摘要
流程:把线程dump出来,然后分析

1:Threaddump的方法:

kill -3 pid

jstack -l pid

jvisualvm中来thread dump

2:找到导致cpu高的线程

top -H -p pid

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM   

查看全文: http://www.udpwork.com/item/6158.html

+0  读书笔记:对线程模型的批评

Tag: 技术读物 | 操作系统 | 程序设计 | 编程语言 | Design | Programmer | programming language | threading model
Ian.sino 发于 2011年05月03日 10:23 | 点击: 2750 | 展开摘要
——感谢Ian.Sian投递本文——

多线程模型是主流的并发编程模型。在过去几十年来,多线程模型一直是开发并发程序的有力工具。然而,它的历史并非总那么美好。1997年,NASA 的“火星探路者”号在执行任务的途中遭遇了严重的时序异常(参见 “What really happend on Mars“,注目 follow-up 中的现身说法),无法发回探测数据。如果不是 NASA 远程刷新了程序,它的结局就只能是报废在火星上。这一切都是由程序中潜藏的一个

查看全文: http://www.udpwork.com/item/4983.html

+0  《程序员的自我修养》中关于加锁不能保证线程安全的一个错误

Tag: 并行编程 | memory visibility | Pthreads | 原子操作 | 多线程编程 | 线程安全
Guancheng (G.C.) 发于 2011年04月09日 08:49 | 点击: 2309 | 展开摘要
在《程序员的自我修养 — 链接装载与库》一书第28页“过度优化”这一节中,作者提到了编译器优化可能造成多线程bug的情况(我手中的是09年6月第二次印刷那版)。原文如下:

线程安全是一个非常烫手的山芋,因为即使合理的使用了锁,也不一定能保证线程安全,这是源于落后的编译器技术已经无法满足日益增长的并发需求。很多看似无错的代码在优化和并发前又产生了麻烦。最简单的例子,让我们看看如下代码:

x = 0;

Thread 1 Thread 2

lock

查看全文: http://www.udpwork.com/item/4758.html

+0  kernel的rlimit变化

Tag: 操作系统 | kernel | rlimit | threadgroup
DongHao 发于 2011年02月22日 14:05 | 点击: 2220 | 展开摘要
inux kernel里是不区分进程/线程的,都用的是struct task_struct结构。如果一个进程启动,然后创建n个线程,那么对内核来说,就是多了n+1个struct task_struct结构而已,且这后n+1个task_struct里的成员指针group_leader指向那个创建它们的进程。这个创建其它人的进程当然就是这个thread group的leader。

在2.6.9版的kernel里,每个task_struct有自己的rlim结构(就是用来限制进程访

查看全文: http://www.udpwork.com/item/4335.html

+0  Linux下面的线程锁,条件变量以及信号量的使用

Tag: 知识┊技术相关 | linux | pthread
xsky 发于 2011年02月15日 20:43 | 点击: 1313 | 展开摘要
 

Linux下面的线程锁,条件变量以及信号量的使用

一) 线程锁
1) 只能用于"锁"住临界代码区域
2) 一个线程加的锁必须由该线程解锁.

锁几乎是我们学习同步时最开始接触到的一个策略,也是最简单, 最直白的策略.

二) 条件变量,与锁不同, 条件变量用于等待某个条件被触发
1) 大体使用的伪码:

// 线程一代码
pthread_mutex_lock(&mutex);
// 设置条件为true
pthread_cond_s

查看全文: http://www.udpwork.com/item/7444.html

+0  剖析为什么在多核多线程程序中要慎用volatile关键字?

Tag: 并行编程 | Pthreads | volatile | 原子操作 | 多核 | 多线程Bug | 多线程内存模型 | 多线程编程 | 线程同步 | 线程安全
Guancheng (G.C.) 发于 2010年12月04日 16:46 | 点击: 2962 | 展开摘要
这篇文章详细剖析了为什么在多核时代进行多线程编程时需要慎用volatile关键字。

主要内容有:

1. C/C++中的volatile关键字

2. Visual Studio对C/C++中volatile关键字的扩展

3. Java/.NET中的volatile关键字

4. Memory Model(内存模型)

5. Volatile使用建议

1. C/C++中的volatile关键字

1.1 传统用途

C/C++作为系统级语言,它们与硬件的联系是很紧密的。

查看全文: http://www.udpwork.com/item/3673.html
|<<<12>>>| 一共2页, 14条记录