ZKX's LAB

j2me如何跳出多线程中的死循环? 线程中跑循环会跑死么

2021-04-25知识2

会不会可能导致线程while死循环 直接上代码:2113[cpp]view plain copyincludeincludeincludestatic int vvv=1;void*thread1(void*){sleep(2);printf(\"sss\\n\");vvv=-1;return NULL;}int main(){pthread_t t;int re=pthread_create(&t,NULL,&thread1,NULL);if(re){perror(\"thread\");}while(vvv>;0){sleep(1);}return 0;}在main函数里启动了一个线程5261thread1,thread1会等待一段时间后修改vvv=-1,然后当4102vvv>;0时,主线程会1653一直while循环等待。理想的情况下是这样的:主线程死循环等待,2秒之后thread1输出\"sss\",thread1退出,主线程退出。保存为thread-study.c 文件,直接用gcc-O3 优化:[plain]view plain copygcc thread-study.c-O3-pthread-gstabs再执行./a.out,可以发现控制台输出“sss”之后,会一直等待,再查看CPU使用率,一个核跑满了,说明主线程在死循环。貌似就像上面所的,主线程因为缓存的原因,导致读取的 vvv 变量一直是旧的,从而死循环了。但是否真的如此?经过测试,除了O0级别(即完全不优化)不死循环外,O1,O2,O3级别,都会死循环。再查看下O3级别的汇编代码(用 gcc-S thread-study.c 生成),main函数部分是这样的:为了便于查看,手动加了。

Java怎么写死循环能让CPU多核心全部跑满。Java怎么写死循环能让CPU多核心全部跑满。目前我的语句是double a=xxxx.xxxxx,b=xxxx.xxxx,c=xxxxxx.xxxxxwhile(true){System。.

java 多线程死循环怎么动态传参?急! 用继承的方式实现Thread类,取名MyThread,在MyThread里面加一个属性 private Thread otherThread;并且给get,set方法.在run方法里面的死循环中判断,if(otherThread。null){取你要的参数};这样一来,在new完thread1和thread2之后,调用thread2.setOtherThread(thread1);然后再去start.当然,还要给MyThread加一些属性存放你要传递的参数,在thread1的死循环里操作这些属性.

#线程中跑循环会跑死么

随机阅读

qrcode
访问手机版