易截截图软件、单文件、免安装、纯绿色、仅160KB

菜鸟Linux 线程问题

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <stdlib.h>
void thread1(void){
int i;
for(i=0;i <3;i++){printf("1");
//sleep(1);
}
}
void thread2(void){
int i;
for(i=0;i <3;i++){printf("2");
//sleep(1);
}
}
int main(){
pthread_t id1,id2;
int i,ret;
ret=pthread_create(&id1,NULL,(void*)thread1,NULL);
if(ret!=0){
printf("erro create thread1!");
exit(1);
}
ret=pthread_create(&id2,NULL,(void*)thread2,NULL);
if(ret!=0){
printf("erro create thread2!");
exit(1);
}
pthread_join(id1,NULL);
pthread_join(id2,NULL);
}
在ubuntu下,怎么貌似两个线程间没有竞争关系,总是一个线程输出完后另一个才输出,加入sleep()后,貌似是主进程都sleep了,在5~6秒后,打印出交替输出的结果,为什么????还望牛人赐教
默认情况下标准输出流是行缓冲
只有遇到 "\n" 、超过最大缓冲及程序结束才输出

额~输出是由于这个问题,但是为什么两个线程之间不用sleep就没有竞争关系呢?还望再一步赐教

会不会是cpu分配的时间片啊,要不多循环几次试试。

现在cpu的速度,就这点活还竞争?
自己的时间片就能全部做完了



未加入sleep(1),每个线程的打印之间无间隔,这几行代码在OS分配的一个时间片内早已做完,所以结果不可能出现交替。其实出现了竞争只是你没有发现


相关问答:

java如何控制远程Linux重启

我目前在本地的linux上写了一个swing的界面,想通过这个界面来控制其它电脑的linux重启。
我知道用Runtime.getRuntime().exec("shutdown -r");可以控制本机Linux重启,但是怎么控制远程的linux重启呢? ......

Linux Socket HTTP请求的问题,高手进!

小弟最近需要一个用socket获取html文档的代码,但是老是不能获取完整的html源码。原因不明,望高手指点!
C/C++ code:

char *Http_GET(char *host,int port,char *data) //发送GET请求
{
char response[2 ......

有关linux安装脚本kickstart的编写

我之前制作的linux自动安装iso已经成功了,现在想对其进行一些定制修改,比如,更改grub图片等。
我在ks.cfg的%post段里面是这样写的:
%post --nochroot
# Move the contents of the tar into their new locati ......

北京急招linux、PHP网络应用开发

我们隶属中科院计算所网络重点实验室(http://www.ict.ac.cn/survey/channel/detail443.asp)基础设施课题组.
现因项目和业务拓展的需要,特需要招聘与项目相关的网络应用工程师1-2名。

具体要求如下。有意者 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号