上传项目不支持Firefox,提示代码附件太大(1.4M),我写了30多分钟的描述全没了,太坑爹了。 10分有点贵,绝对原创,共2个代码文件300多行,下载请谨慎。你下载了,若绝对不爽在评论中说出来,不要让其他同学上当,如果觉得还可以也请留言。 代码采用多工作者多线程执行任务。通过暴露的方法往工作者传递消息,然后采用事件回调返回处理结果,实现的事件有OnThreadComplete,OnAddedTask,OnStart,OnSuccess,OnFailure,OnTimeout。 事件回调支持同步或异步,每工作者可以指定执行超时时间,避免线程阻塞死掉。队列采用线程安全的BlockingCollection,每组工作者用一个队列。委托采用Func来定义的,没有采用传统且不太好理解的Delegate。这让代码减少很多,也更容易理解。多线程应该采用消息中心来交换数据,这样就规避了线程同步交互,等待,阻塞等等,全部是异步调用,全部是接收消息工作,然后产生消息,线程间没有耦合,消息中心有很多成熟的方案如RabbitMQ, Redis(里面有简单的消息交换),微软有消息云服务等。如果应用不复杂,可以采用DB做个简单的消息中心,建议采用HTTP接口来获取与写入消息,方便将来升级重构消息中心。 开发环境VS2012,Framework4.0,代码注释量很大,如果你高兴这代码你可以随意蹂躏,如果你有建设性意见请告诉我。 下面是部分测试代码: //发送消息方法容器 var msgContainer = new Hashtable(); //创建并启动工作者 foreach (var key in workers.Keys) { //创建工作者 //启动5个线程,异步事件回调,方法执行20秒超时,程序跑起来有100个线程,由于引入超时控制,实际线程将达100+50 //下面的20个工作组,有5个是超时的,主要测试OnTimeout事件,你可以设置seleep的时间来控制 //我把sleep的时间设置的有点长,方便你测试 //测试的时候你会看见有异常,那是应为Timeout我采用的是Thread.Abort方法,这样才出发了ontimeout事件 var worker = new Sehui.Worker(5, key.ToString(), (Func)workers[key], false, new TimeSpan(0, 0, 20)); worker.OnStart += worker_OnEvent; worker.OnSuccess += worker_OnEvent; worker.OnFailure += worker_OnEvent; worker.OnTimeout += worker_OnEvent; //启动工作者 worker.Start(); //将增加消息方法放到Hashtable中 //这里我是偷懒,下面可以用循环的方式往线程中add message msgContainer.Add(key.ToString(), new Func(worker.AddTask)); } //向20个工作者发送消息,每个工作者发送20条消息 for (var i = 0; i < 20; i++) { for (var k = 0; k < 20; k++) { ((Func)msgContainer["SyncDb" + k])("[Work " + k + "] Message " + i); Console.WriteLine("send msg to worker{0},msgid:{1}", k, i); } }
2024-01-25 05:05:28 1.56MB Thread Func Delegate 异步事件
1
echo_cancel_func_C代码回音消除回音抵消
2023-03-28 18:56:16 4KB
1
该代码实现了 Chen 等人中给出的算法。 al 1991。它需要用户的最大容忍度。它从总 M 个回归量中选择 Ms 显着回归量。 不幸的是,训练 RBF 网络后获得的错误并不如预期。 我的代码有错误吗??? 请随时修改此代码并将您的建议邮寄给 anshuman0387[at]yahoo[dot]com。 在这方面的任何帮助将不胜感激
2023-02-12 19:27:36 2KB matlab
1
matlab异常探测Weighted-RX 探测算法,用于高光谱影像的异常探测。内行应该清楚,直接调用函数即可。
2022-02-16 11:10:30 2KB 高光谱 异常探测 WRX matlab
1
catia后处理 func 三菱可用。把文件复制到catia安装目录 x:\Program Files\Dassault Systemes\B25\win_b64\startup\Manufacturing\IMSPar文件夹下。
2022-01-09 15:45:06 189KB catia func 三菱后处理
1
链接到 CDAAC 数据库: http://cdaac-www.cosmic.ucar.edu/
2021-12-23 15:10:58 3KB matlab
1
1.损失函数 损失函数,又叫目标函数,是编译一个神经网络模型必须的两个要素之一。另一个必不可少的要素是优化器。 损失函数是指用于计算标签值和预测值之间差异的函数,在机器学习过程中,有多种损失函数可供选择,典型的有距离向量,绝对值向量等。 损失Loss必须是标量,因为向量无法比较大小(向量本身需要通过范数等标量来比较)。 损失函数一般分为4种,平方损失函数,对数损失函数,HingeLoss 0-1 损失函数,绝对值损失函数。 我们先定义两个二维数组,然后用不同的损失函数计算其损失值。 import torch from torch.autograd import Variable import
2021-12-05 13:51:38 167KB c fu func
1
func_timeout Python模块支持以给定的超时时间运行任何现有功能。 功能超时 func_timeout 这是您传递超时,要调用的函数以及所有参数的函数,并且它最多运行#timeout#秒,并且将返回/引发传递的函数否则将返回或引发的所有内容。 def func_timeout(timeout, func, args=(), kwargs=None): ''' func_timeout - Runs the given function for up to #timeout# seconds. Raises any exceptions #func# would raise, returns what #func# would return (unless timeout is exceeded), in which case it raises Functi
2021-12-04 12:17:40 55KB python function thread stop
1
文章 function—— Verilog的函数,https://blog.csdn.net/sinat_31206523/article/details/106505878 的附件
2021-11-17 09:51:42 43KB verilog function
1