由买买提看人间百态

topics

全部话题 - 话题: 多线程
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)
a****l
发帖数: 8211
1
Not only will multi-threading not increase the reading speed of a file, most
probably it would actually slow down the speed and at the same time is
murdering the hard drive. Good luck.

一个,单线程和多线程能达到的速度已经被瓶颈了。
h*****0
发帖数: 4889
2
双线程处理,和多线程读文件,不是一个东西吧。
b***i
发帖数: 3043
3
来自主题: Java版 - Java线程一问
我想按下按钮的时候开始这个线程,需要用thread什么吧。这个时候,线程开始运行或
者准备运行了,我再按按钮,就不让新开一个。怎么禁止新开一个?
q*********u
发帖数: 280
4
其实是有这方面的应用的,比如
synchronized(this){
...
}
这种代码出现频率很高的。
看来如果是thread对象, 猜测那么jvm有这个特性,当线程结束,线程自己会自动
notify了

very interesting. since spurious wakeups are always allowed for wait(), it
is not wrong that JVM decides to wake it up upon thread termination. this
cannot be a useful feature, nobody should sync on a thread object like you
did. probably for some historic reasons.
g*****g
发帖数: 34805
5
写框架.写从Server Socket开始实现的Server,或者基于Async IO的类库,如Netty
,Ning Async HttpClient等的server。这种活一般而言新手是没有机会接触的。
Swing之类的也有一些,大多比较简单,就是2-3个线程同步。
大部分Java工作需要一点多线程的知识,但是在框架之下,需要直接写的不多。
至于什么公司招这种人。主要还是大公司,比如苹果做icloud就很缺这方面的人,有朋
友说一直找不到合适的。你可以去看他们的广告。
T*********g
发帖数: 496
6
来自主题: Java版 - core java多线程一般面试什么
我经常问cobditiob的实现。怎么发现和避免死锁,为什么需要线城池,怎么实现的。
java 下能主动中断一个线程吗,解释java这样设计的原因等等。java多线程是个很大
的topic,很多可以问。
r******r
发帖数: 700
7
是啊。多线程程序,试了一下,在 eclipse 里 debug,好像也与单线程不一样,不太
好 track 逻辑。
p*****2
发帖数: 21240
8
来自主题: Java版 - 多线程真头疼,但也挺有趣

大牛能不能比较一下多线程和异步编程呢?多线程有什么优势?
l*****o
发帖数: 473
9
来自主题: Java版 - 多线程真头疼,但也挺有趣
我试着对楼主的方法进行点评一下,好像还有许多地方是可以提高的。
《《(1)将原来的逐行读取,逐行处理,改为先将每个文件的所有行读到一个新建的
DataStore 中。
这步是可以用memory mapped file进行提高的。如果单线程读取所有的文件,那么这部
分工作就变成串行化了。
《《(4)现在由于多线程异步处理,直接输出无法保证顺序。就先把这部分信息存储
到一个新建的 map 中,保存记录 ID -> data 的映射。当一个文件处理完了,才最后
按 ID 从map 有序输出到 XML 中。
为了保证顺序,其实还有其它方式可以处理的。比如,我们可以输出到不同文件中,最
后用脚本把所有东西重新拼成一个新的文件。
z*******3
发帖数: 13709
10
来自主题: Java版 - 多线程真头疼,但也挺有趣
异步编程大多数时候底层就是多线程
别人帮你处理了多线程而已
r******r
发帖数: 700
11
来自主题: Java版 - 多线程真头疼,但也挺有趣
如想练练 hadoop,有什么好的 tutorial 没有?不过,这个具体任务确实用不上。这个
4G 的数据,还是很少。这个工具就像一个 utility, 虽然代码有 4000 多行。
多线程还是要好好掌握吧?因为很多地方需要用多线程,并不只是因为数据量大了。
z*******3
发帖数: 13709
12
来自主题: Java版 - 多线程真头疼,但也挺有趣
你用java做任何东西,脑子里首先想到的是用现成的各种工具
框架容器数据存储等,然后才是自己动手去写,除非上头有要求
比如涉及到政府的一些机密系统,需要100%读懂源代码
但是大多数时候,都不用你亲力亲为
当然多线程是一个概念
学过java的都学过这一章,作为基本功,要掌握
但是工作中,能避开就避开,一般都交给各种现成的工具
所谓不要重复造轮子
你这种用hadoop就好了,如果精度要求高,用db
db用postgresql,hadoop就有nosql,现在这两个都是文艺青年用的
公孙大神说的
server,文艺点用spring+tomcat,学术点用jboss
这个主要是event
event vs thread那个event,生命周期交给tomcat/jboss这些去管理
如果你真想用thread,从启动到销毁,那就用akka
这些是新的选择,而concurrent那个包主要是针对旧的legacy code做优化用的
因为把旧的代码全部换成akka这些,成本很高,未必值得去做
所以不同的剧本适用不同的工具,包括rmi这些
其实这些底层都是多线程,作为概念你要理解,但是自己去写
我觉得... 阅读全帖
c*m
发帖数: 836
13
来自主题: Java版 - 多线程真头疼,但也挺有趣
这个对初学者来说的确很常见。其实常用的OS都支持I/O多线程。如果不想用多线程,
Java还可以用NIO的nonblocking stream。
还有一种隐藏的I/O congestion就是平时没事,一旦出错,因为很多log level都是设
成error, 出错的时候才输出,突然增加大量的I/O请求,像雪崩一样,形成正反馈,结
果一个不是很严重的错误就引发系统崩溃。这个情况如果没经验的话,调试的时候经常
想不到,到prod出现一次才意识到。
p*****3
发帖数: 488
14
来自主题: Java版 - 请教一个多线程的问题
看不懂程序,能说说这段程序的目的吗。感觉有点乱七八糟的。抛个砖头,等zhaoce和
二爷
只读为啥要多线程,构造函数咋啥都传进来了,AtomicInteger 不需要volatile修饰吧
,thread创建了咋没东西track,lock.wait后没有double check precondition,为啥要
swallow exception, 为啥要sleep,是不是可以用executionService
可以等都执行完了退出,比如像这样设置个done, 中断可以发interrupt, 线程要加判
断和处理interrupt的逻辑
p*****2
发帖数: 21240
15
有时间折腾多线程是不是还不如学点别的?比如STM,AKKA这些。多线程看看理论是不
是就可以了?
d****i
发帖数: 4809
16
Java的多线程和OS Native thread的多线程还是很不一样的。就像不同的OS, Win32
thread和pthread也完全不一样,然后Win32和pthread和RTOS上的thread(task)也完全
不一样,虽然概念上总是有些相通之处。
p*****3
发帖数: 488
17

java的多线程也是建立在OS上吧,比如说如果在windows上跑,最后总是会调用win32
API, 还是说java有什么牛逼的能自己实现一套多线程的东西
l******y
发帖数: 182
18
您的意思是不是这样:
在第2种情况,main运行到count.minus()被阻塞。所以剩下的for loop都运行不了了。
然后程序就永远阻塞在这里了。
如果是1,main始终可以运行。阻塞问题只是发生在threadpool里的线程。所以程序始
终可以把for loop运行完。线程里的阻塞最后也就会解决。
不知道我的理解对不对?谢谢!
M********u
发帖数: 42
19
如果是简单的for loop,就用openmp包在loop外。如果logic比较复杂,需要手动
create thread。没有一个简单的办法把一个单线程的程序改成多线程的
a***g
发帖数: 70
20
上次发问的时候其实并没有找到问题,现在已经把问题 narrow down 了,具体是
1 程序以 root 身份启动
2 提高优先级 (nice 一个负值)
3 seteuid 将 effective user id 换成非 root
4 pthread_create() <==== core dump
在第4步的时候出现了 core dump。
如果把第2步的nice去掉(即不提高进程的优先级),则没有问题。
如果把第3步的seteuid去掉 (即不换用户),也没有问题。
但是我要做的是:程序必须以root启动,尽量提高优先级好让以后创建的线程也有
高优先级,但是创建的线程不能有 root 权限。
上述 1-4 步在 linux 上没有问题, 在 AIX 5.1, 5.2 也没有问题,结果在
AIX 5.3 上就会 core dump, 实在是搞不清楚为什么,请大侠指点 ...
多谢了!
x****u
发帖数: 44466
21
任何多线程的问题都找相应的多线程模板套用,千万不要自己独创轮子。这样地球就清
静了。
g*********s
发帖数: 1782
22
比如十个线程同时读一个文件,系统的调度开销还有运行时间,和这些线程分别读同一
个文件的十个副本相比如何?
另外Unix的并发读是不是没有上限?
l*********s
发帖数: 5409
23
for htmlpage in soaps:
result_list=result_list+scrapper(htmlpage).run()
这段代码是用来从网上收集表格信息加以汇总的,我想用线程来加快执行速度,所以把
原来的文本提取部分放到线程子类scrapper里面了,但是感觉不太对,这样作还是顺序
执行?
c*****z
发帖数: 182
24
来自主题: Programming版 - 问个多线程问题
正在复习多线程的sleeping barber问题,
wiki上给的答案,barber的线程如下:
while(true) { //runs in an infinite loop
P(Customers) //tries to acquire a customer - if none is available he goes
to sleep
P(accessSeats) //at this time he has been awakened - want to modify the
number of available seats
NumberOfFreeSeats++ //one chair gets free
V(Barber) //the barber is ready to cut
V(accessSeats) //we don't need the lock on the chairs anymore
//here the barber is cutting hair
}
其他背景信息可以在wiki上找到,我的问题是,V(Barbe
g******e
发帖数: 998
25
我也不知道,探讨一下啊 -
C#多线程写mysql应该没问题吧,问题应该是mysql端,如果你的多线程都要lock table
,速度也许不会快多少。
c****f
发帖数: 1102
26
mysql看存储引擎 表级锁的话..多线程也没意义 写入就锁表
行级锁的话 比如innodb 应该可以多线程写入
e******r
发帖数: 623
27
谢谢。我想过用pthread_join,但是好像要分头去join每一个我create出来的线程,比
较麻烦。但是看来没有什么更简单的了。肉包已发。
T*****9
发帖数: 2484
28
直接建一个线程号数组就行了呗
一个for loop全部join
x****u
发帖数: 44466
29
比如我还有几个线程也在操作global,那么这个优化就严重影响语义了。两个线程一读
一写一个global的int的话,锁是不必要的。
gcc优化掉赋值也许是因为它发现global没被其它程序所引用。

optim
x****u
发帖数: 44466
30
OK。那我就把这个问题简化一下了。
书写C/C++多线程程序时,如果定义了多线程共享的全局变量,是否一定要加上
volatile修饰符以保证gcc不在极端的情况下对其优化。
你认为有必要吗?

volati
still
not
optimizatio
x****u
发帖数: 44466
31
一般的说法是C不保证线程安全,关于C优化还可以破坏多线程global语义,而且至今也
没找到明确依据(你那个是C++的),这个语法中没有明确定义的东西多了去了。
乱序是另一个话题了。。。用atomic代替volatile是不行的,锁不能乱用。

/C
intrinsic
p***o
发帖数: 1252
32
单线程语义 is well defined.
There is no such thing called 多线程语义, especially for multiple variables.
z****e
发帖数: 2024
33
来自主题: Programming版 - 多线程有什么优化的方法?
我怎么觉得很多情况多线程都比单线程慢呢?
我是能不加互斥锁就不加,
而且也没有busy waiting。
看见两个cpu100%工作,结果,还是比一个cpu100%要慢,或者想当。
这种为什么?
z****e
发帖数: 2024
34
来自主题: Programming版 - 多线程有什么优化的方法?
那个run就是线程启动的函数。
thread 对象,必须要一个heap上面的指针,
就是这句话。
exe.execute(new events(p, &oprand::cal2) );
我也不知道,这个stack上边的exe,怎么操作heap上的指针的。
因为多数情况,当main()退出的时候,其他线程还没完事。
我就奇怪,这个stack上的exe thread对象,main结束的时候,不是已经玩完了么?怎
么还能顺利的销毁它持有的heap指针呢?
p***o
发帖数: 1252
35
来自主题: Programming版 - 多线程有什么优化的方法?
那个execute函数会创建一个线程吗?如果是,你得把这个时间刨掉。
一般来说要避免频繁创建/销毁线程。通常都搞个thread pool,然后
把要执行的函数传过去。
z****e
发帖数: 2024
36
来自主题: Programming版 - 多线程有什么优化的方法?
我就是单线程用的那个f。
觉得多线程这玩意还真难搞得很精通。
f*******y
发帖数: 988
37
来自主题: Programming版 - 用多线程怎么比单线程还慢呢?
全是外部I/O搞啥多线程
b******n
发帖数: 592
38
来自主题: Programming版 - C++多线程和硬件的关系
intel 是用HT, AMD也使用类似的技术,我不知道你小河个新片的具体代号
intel的Sandy Bridge支持256-bit的SIMD,如果你的程序大量的矩阵运算,那部分可能
会有50%的性能提高。对于多线程,在内存绝对优化的状态下,多核的优势大。如果同等
级的cpu比较,intel绝对是胜于AMD的。
网上有很多的benchmark可以查。
我记得跟内存也有关系,如果全部内存曹都适用,内存速度只能有2/3。。
多线程相对独立,24听起来比16好一些。。不过估计throughput差不多,可能省电一些
f******y
发帖数: 2971
39
来自主题: Programming版 - C++多线程的选择
C++里面多线程的库有好几个:
(1) pthread
(2) boost, 这个其实是pthread的wrapper
(3) tbb
(4) c++0x 也支持一些基本的多线程编程
我现在正在想该学哪一个,个人觉得tbb的功能最强大,c++0x的好处是它是包含在stl
里的,
compiler的支持应该比较好。
各位老手能指点一下这几个库哪个比较好吗?
z****e
发帖数: 54598
40
来自主题: Programming版 - 单线程的程序怎么搞?
比如r这种单线程的程序,我尝试了一下用多线程并发
结果马上出问题,100个并发就不行了
我现在的想法是,用一个singleton包装后访问,每台服务器放一个r
然后每台的weblogic都用这个singleton访问,加上synchronized关键字
以控制访问次数和并发的数量否则会出问题,有谁搞过java中调用r的经验没?
xt
发帖数: 17532
41
来自主题: Programming版 - VC++线程问题
对VC不熟,现在有个问题,就是
如何实现线程的wait-notify过程?
还有如何能够join线程?posix有join的
function,VC好像没有啊
C***y
发帖数: 2546
42
来自主题: Programming版 - VC++线程问题
哪个线程?主线程?
C***y
发帖数: 2546
43
来自主题: Programming版 - VC++线程问题
一个子线程是没必要,我猜楼主是要起多个子线程吧
x**n
发帖数: 1055
44
我有两个windows下的DLL,
一个是Code::blocks加上MingW 4.3.3 编译的DLL
另一个是Visual C++ 2005编译的DLL
都是差分程序,因此想通过类似boost.thread的实现线程同步并且传递数据
因为是不同编译器生成的DLL,所以想问问有没有这个可能实现这两个不同编译器生成
的DLL线程的同步?
因为两个DLL都依赖很多库,所以想要都用同一个编译器去编译(比如都用Visual C++或
者都用MingW编译成功)太困难了
谢谢!
b***i
发帖数: 3043
45
我来说说我的理解吧,是不是你想做的
t_msvc线程:
for(t=0;t {
这里传递这一步需要的信息给t_mingw;
等待同步信号;
t_msvc自己的计算...
}
t_mingw线程:
for(t=0;t {
这里传递这一步需要的信息给t_msvc;
等待同步信号;
t_mingw自己的计算...
}
h**i
发帖数: 712
46
一个快线程需要从共享内存读一个慢的线程写的数据,为了保证不读重复的数据,是不
是用信号比message queue快?
p******e
发帖数: 528
47
比方说我有个一个并行程序,同时还有一个全局变量。如果多个线程都需要访问
同一个全局变量,会不会说由于多个线程都申请访问同一个内存地址而造成互相
竞争的情况呢?谢谢!
n******t
发帖数: 4406
48
C++写多线程,就是需要用C写多线程完全没问题的能力+有折腾语言的耐心。
这种人,就我所知,千里挑一。
c****3
发帖数: 10787
49
因为是多线程,网络程序吗。Windows的线程模式和网络编程和Linux里面很不一样。纯
BSD的scoket或者posix API,在Windows下都工作的很差,有很多限制。必须用Windows
Native API才能工作的好。
所以基本上跨平台的程序,在Linux运行好,到Windows里就会运行很差。两边都运行好
,基本要做两套,为两种系统分别优化,很费时间。所以极少两边都能运行好的,尤其
是服务器类需要高性能的网络程序。
c****3
发帖数: 10787
50
还有一点,Windows的创建个进程时间都是重量级的,线程是轻量级的,Windows内核直
接调度线程,不是进程。
Linux进程创建开销还是挺小的,有个ftp服务器叫vsftpd,一个连接fork两个进程,在
Linux下搞几千个连接没有任何问题,在Windows里这么用直接就崩了。所以Linux程序
凡是直接port到Windows的,都性能极差,这倒不是因为Windows差,而是两者差别太大。
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)