范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

教程24国产编程语言Cbrother多线程

  线程的创建
  CBrother通过CreateThread方法创建多线程
  函数
  描述
  用法
  CreateThread(func,param)
  创建一个线程来执行func函数,并传递param给func函数,返回线程ID
  var threadid = CreateThread(MulThreadFunc,1)
  var threadid = CreateThread(MulThreadFunc)
  GetThreadID()
  获取当前线程ID
  var threadid = GetThreadID()  function MulThreadFunc(param) { 	print "MulThreadFunc param:" + param " threadid:" + GetThreadID(); }  function main(param) { 	var threadid = CreateThread(MulThreadFunc,1);			//第一个参数是函数,第二个参数是传递的参数 	print "CreateThread threadid:" + threadid; 	threadid = CreateThread(MulThreadFunc,2); 	print "CreateThread threadid:" + threadid; }
  结果: CreateThread threadid:13241 CreateThread threadid:4637 MulThreadFunc param:1 threadid:13241 MulThreadFunc param:2 threadid:4637 线程同步 Lock
  多线程同时修改同一个数据,只有一个线程会修改成功,其他线程将抛出SyncException
  故多线程修改同一个数据的时候一定要用Lock类来做线程之间的同步 var myLock = new Lock();
  函数
  描述
  lock
  加锁,其他线程再次加锁会阻塞
  unlock
  解锁之后其他线程才可以获得锁权
  例子: var g_count = 0; var g_lock = new Lock(); function MulThreadFunc(param) { 	for(var i = 0 ; i < 10 ; i++) 	{ 		g_lock.lock(); 		g_count++; 		print "MulThreadFunc param:" + param + " g_count:" + g_count; 		g_lock.unlock();	 	} }  function main(param) { 	CreateThread(MulThreadFunc,1); 	CreateThread(MulThreadFunc,2);  	while(g_count != 20) 	{ 		Sleep(1000); 	} }
  结果: MulThreadFunc param:1 g_count:1 MulThreadFunc param:2 g_count:2 MulThreadFunc param:1 g_count:3 MulThreadFunc param:2 g_count:4 MulThreadFunc param:2 g_count:5 MulThreadFunc param:1 g_count:6 MulThreadFunc param:2 g_count:7 MulThreadFunc param:1 g_count:8 MulThreadFunc param:1 g_count:9 MulThreadFunc param:2 g_count:10 MulThreadFunc param:2 g_count:11 MulThreadFunc param:2 g_count:12 MulThreadFunc param:2 g_count:13 MulThreadFunc param:2 g_count:14 MulThreadFunc param:1 g_count:15 MulThreadFunc param:2 g_count:16 MulThreadFunc param:1 g_count:17 MulThreadFunc param:1 g_count:18 MulThreadFunc param:1 g_count:19 MulThreadFunc param:1 g_count:20 Thread 类
  CBrother提供了Thread类,它有定时器功能,也可以处理线程消息
  函数
  描述
  用法
  setThreadAction(action)
  给thread添加一个action处理类对象,action类接口在下面讲
  myThread.setThreadAction(action)
  addTimer(ms,func,cnt)
  添加一个心跳,每ms毫秒执行全局函数func,cnt为执行次数,cnt可以不传,缺省为-1,表示一直执行。线程启动前可以在外部调用,线程启动后只能在线程内部调用。
  myThread.addTimer(1000,func);
  myThread.addTimer(1000,func,5);
  addMsg(msg)
  给线程发送一条消息,会在action的onMsg方法里被处理,msg可以为任意对象
  myThread.addMsg(msg);
  start()
  启动线程
  myThread.start();
  stop()
  停止线程
  myThread.stop();
  thread对象销毁时,线程会停止。但如果thread对象被action对象引用,则线程不会停止。建议在不用线程的时候主动停止。 Thread响应Action类可以有如下接口
  function onInit()  ,线程启动初始化。
  function onEnd()  ,线程结束时。
  function onMsg(msg)  ,接收线程消息。
  例子:  class ThreadMsg { 	var msgid; } class ThreadAction { 	var thread; 	 	function ThreadAction(t) 	{ 		thread = t; 		this.thread.addTimer(1000,onHeart1); 		this.thread.addTimer(1000,onHeart2,2); 	} 	 	function onInit() 	{ 		print "thread init" ; 	} 	 	function onMsg(msg) 	{ 		print "msg id:" + msg.msgid; 	} 	 	function onEnd() 	{ 		print "thread end"; 	} 	 	function onHeart1() 	{ 		print "in action heart1"; 	} 	 	function onHeart2() 	{ 		print "in action heart2"; 	} }  class testHeart { 	function onTestHeart() 	{ 		print "in testHeart"; 	} }  function TestTime() { 	print "in time1"; }  function TestTime2() { 	print "in time2"; }  function main(param) { 	var thread = new Thread(); 	thread.addTimer(1000,TestTime); 	thread.addTimer(1000,TestTime2,2); 	thread.addTimer(1000,new testHeart().onTestHeart); 	thread.setThreadAction(new ThreadAction(thread)); 	thread.start(); 	 	var i = 0; 	while(1) 	{ 		Sleep(1000); 		var msg = new ThreadMsg(); 		msg.msgid = i++; 		thread.addMsg(msg);		 		if(i >= 5) 		{ 			break; 		} 	} 	thread.stop(); }
  结果: thread init msg id:0 in time1 in time2 in testHeart in action heart1 in action heart2 msg id:1 in time1 in time2 in testHeart in action heart1 in action heart2 msg id:2 in time1 in testHeart in action heart1 msg id:3 in time1 in testHeart in action heart1 msg id:4 thread end Event 类
  多线程编程中,经常需要某个线程在等待其它线程做完一些处理后才能继续执行。CBrother提供了Event类来做这样的事情。 var myEvent = new Event();
  函数
  描述
  用法
  wait(outtime)
  开始等待,outtimeh毫秒后超时,不传递outtime默认为0,表示不超时。一个Event对象只能等待一次,多次调用返回false表示等待失败
  myEvent.wait();
  myEvent.wait(1000);
  endWait(data)
  通知Event结束等待,data为传递给Event的数据,可以不传递。一个Event对象在wait之后之能触发一次endWait,多次调用返回false表示结束失败
  myEvent.endWait();
  myEvent.endWait("end");
  isTimeOut()
  结束等待后用来判断是正常结束还是超时结束。等待没结束之前调用没有意义。
  var isOut = myEvent.isTimeOut();
  getData()
  等待结束后获取endWait传入的数据。等待没结束之前调用没有意义。每次endWaite后只能调用一次getData(),第二次调用返回null
  var data = myEvent.getData();
  reset()
  重置事件对象,重置后又可以调用wait
  myEvent.reset();
  例子: var g_count = 0; var g_lock = new Lock(); var g_Event = new Event(); function MulThreadFunc(param) { 	if(param == 1) 	{ 		print "wait in thread:" + param; 		g_Event.wait(3000);	//等待3秒 		print "wait end in thread:" + param; 	} 	 	for(var i = 0 ; i < 10 ; i++) 	{ 		g_lock.lock(); 		g_count++; 		print "MulThreadFunc param:" + param + " g_count:" + g_count; 		g_lock.unlock();	 	} 	 	if(g_Event.endWait()) 	{ 		print "endWait suc in thread:" + param; 	} 	else 	{ 		print "endWait faile in thread:" + param; 	} }  function main(param) { 	CreateThread(MulThreadFunc,1); 	CreateThread(MulThreadFunc,2);  	while(g_count != 20) 	{ 		Sleep(1000); 	} }
  结果: wait in thread:1 MulThreadFunc param:2 g_count:1 MulThreadFunc param:2 g_count:2 MulThreadFunc param:2 g_count:3 MulThreadFunc param:2 g_count:4 MulThreadFunc param:2 g_count:5 MulThreadFunc param:2 g_count:6 MulThreadFunc param:2 g_count:7 MulThreadFunc param:2 g_count:8 MulThreadFunc param:2 g_count:9 MulThreadFunc param:2 g_count:10 endWait suc in thread:2 wait end in thread:1 MulThreadFunc param:1 g_count:11 MulThreadFunc param:1 g_count:12 MulThreadFunc param:1 g_count:13 MulThreadFunc param:1 g_count:14 MulThreadFunc param:1 g_count:15 MulThreadFunc param:1 g_count:16 MulThreadFunc param:1 g_count:17 MulThreadFunc param:1 g_count:18 MulThreadFunc param:1 g_count:19 MulThreadFunc param:1 g_count:20 endWait faile in thread:1

4个月无新用户,日订单锐减500万,滴滴拖到最后还能存在吗?存在的可能性不大,一个企业必须遵守国家的法律法规,不要认为自己是行业老大,就我行我素,上国外上市,泄露了国家的安全信息,严重泄露了全国那么多搭过滴滴人群的信息,国家能放过你吗?在维移动联通和电信相比,哪个网速比较快?在农村使用,选择哪个更好?本人专注通信相关问题,解答通信疑惑,关注了解更多内容!!!移动联通和电信相比,哪个网速比较快?在农村使用,选择哪个更好?我认为不能笼统的说哪个好哪个不好,需要根据当地的实际情况选择如何防范虚拟货币带来的税收风险自2009年比特币面世以来,与虚拟货币相关的投资行为及经济活动迅速风靡全球,至今,全球虚拟货币总市值已经突破2万亿美元。从区域上来看,我国是虚拟货币投资的活跃国家,由于传统监管手段华为手机免费联网是真的吗?感谢您的阅读!我已经被我的父母,问过很多次。他们在一些短视频上看到所谓的华为手机免费连网,到底是不是真的?我必须要告诉大家,这些东西都是假的。天下没有免费的午餐,即使所谓的免费联网华为2。98亿元拿下深圳龙华地块,又要搞什么大工程?10月18日,华为以底价2。98亿元拿下深圳龙华观澜巨无霸产业用地。华为拿下这块产业用地将用来做什么呢?该地块位于深圳龙华区福城街道观澜路和龙澜大道交汇处,毗邻富士康总部,为普通工助听器什么时间都可以戴吗?助听器在我国老百姓心中的知晓度目前还不够高,从其原理上来讲跟日常佩戴的眼镜差不多,但是大家对助听器的接受程度远远没有眼镜高,很多人会觉得戴助听器象征着衰老甚至残疾,在这一点上的意识滴滴取消费我不认可,反馈给平台,处理无果,怎样维权?我们非常希望能处理好您反馈的问题,所以需要您提供下您的个人信息以便我们尽快去核实处理。如果您方便的话,您可以随时私信联系小滴,感谢您的理解和支持。你还是适合坐公交估计2块钱应该能承一提到甘肃,你最先想起来的是什么?大学在甘肃呆了四年,感觉可以谈一下。先说气候。第一次坐火车进入甘肃省,看到满目苍凉的荒山,其实我内心很慌乱,很想回去复读。但是,在甘肃呆上一段时间后,惊奇的发现,我这个南方人,完全为什么说长期听力损失会导致听觉剥夺?因为长期处于听不见或者听不清的状态,会使自己的分辨能力降低,一但分辨能力降低佩戴助听器的效果会大打折扣。所以如果有听力下降的现象,一定要尽早进行干预,保护残余听力及分辨能力。一个双老年人有没有必要配好几千的助听器,只要听到不就行了吗?老年人听力下降需要佩戴什么样的助听器,我们主要还是要看老人的听力损失程度以及自身的言语分辨能力的问题,往往老年人的听力下降和语言的分辨能力的下降是不同步的,如听力下降时间较长,导致微信语音通话与电话有何区别,为什么越来越多的人远离了运营商?现在基本上人手一部智能手机,在99的国人的智能手机中,可能都有一款名叫微信的应用。这是腾讯推出的一款即使社交软件,可以使用文字,语音,图片的形式进行交流,目前的用户群体很庞大,基本
大一新生笔记本电脑推荐2021今年的高考已经结束,意味着又有一批准大学生需要更新自己的电脑设备了,大部分高中生还没有过属于自己的一台笔记本(这是我自己以为的。。因为我身边所有人都是这样的,当然如果读者您或者您身小米有史以来最密集内容发布今晚,有雷总以及金凡屈恒王刚等人将在2000小米社区直播举行小米直面会,届时会透露非常多的新品相关信息。是小米有史以来最密集内容发布,其中1个重要信息是雷总官宣2条产品最新动向16小米最近搞了一个直面会,从宣传到文案都吊足了胃口小米最近搞了一个直面会,从宣传到文案都吊足了胃口,结果最后只是放了一个宣传短片,充满了官方安利和硬广,遭到了米粉的疯狂吐槽,都觉得自己被耍了,雷总为此亲自下场道歉。虽然这个直面会做小米即将召开秋季新品发布会不知道大家有没有发现,昨天小米商城的816活动界面,时间线里透露了一个信息,8月10日,小米秋季发布会,然而今天这个信息已经不见了。下半年各厂商都会发布自家的旗舰手机来继续拓展市场这几款千元机目前最值得入手,你可哪款?国内手机市场形势严峻。这是大家都承认的事实。尤其是低端价位差点亏本,与用户交朋友。当然,这只是夸张,但高性价比是肯定的,所以现在有了。哪些千元机适合我们的学生党?笔者为大家总结了以邓增永高效互动与多元中国茶叶营销渠道40年(19782018)纵观中国茶叶销售渠道40年,我们的总体感觉是,它随着经济社会技术不断变化基础上的不断演化,同时日趋多元。我们应如何理性看待各种不同的渠道型态,尤其是相对新型的销售渠道?看见就上吗?字节跳动否认火山直播与抖音合并阿里20亿美元收网易考拉1字节跳动否认火山直播与抖音合并业务正常展开事件9月6日,据晚点LatePost报道,快手直播的直接竞争者火山直播,已经与抖音直播合并,负责人韩尚佑已改为向Alex(Musical刚刚,近3万人在线抢车!拼多多又有大招,网友可以拼个房一位网友发现今年618不简单,不单单是多了一个电商新秀拼多多的百亿补贴,还连带着多了一场延续补贴战。结果一不小心没忍住,攒的钱全贡献出去了。这让身经百战的网购达人们纳闷不已从以往的郭全中新媒体产业出现新变化2018年,在我国经济增速放缓互联网红利衰竭监管趋严等因素的不利影响下,虽然网络游戏产业稍遇波折,但我国新媒体产业依然保持着较高的速度增长,尤其是大数据人工智能等新产业规模快速扩大决策参考马云正式卸任苹果推出AppleTV1马云正式卸任出走半生归来仍是马老师事件9月10日教师节,马云真的事了拂衣去成了老师,阿里由此迎来了马云之后的张勇时代。2013年,马云宣布辞去阿里巴巴集团CEO的职位,并颇有远见决策参考字节跳动回应控股幸福里字节跳动入股互动百科1字节跳动回应控股幸福里旗下房产信息平台测试中事件8月21日,天眼查数据显示,近日,由字节跳动全资控股的北京星云创迹科技有限公司完成对北京时光荏苒科技有限公司的全资控股,后者则是房