关于并发的那些坑儿
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于并发的那些坑儿相关的知识,希望对你有一定的参考价值。
1. 说一些并发编程的那些话
一说到并发,脑子首先冲出来的是啥?复杂,高难度,难调试...
总的来说就是——高逼格(逃:
的确,并发编程的确不是那么简单的事,初级程序员基本上都接触不到并发,更何况是编程了;但是,只要你有心并且耐心学习下去,你就会发现,并发编程也不是遥不可及的!
我在学习并发相关的知识之前,也觉得这些知识好深奥,肯定玩不来的!现在也不这么过来了么,至少面对它不会无从下手。好吧,在展开我下面的问题之前,我先普及一下关于并发的一些基本知识(常识?)
1 概念:并发其实就是同时在做多件事;比如:我左手拿手机的同时,一边回答同事问我的问题! 这是并发;你在有色网站同时下N个种子,这也是并发
2 实施并发的一些方法手段:多线程就是一种并发的手段,很多人认为多线程就是并发,不然,这只是并发的一种手段;还有异步编程,这也是一种手段
平常我们用的最多的当属异步编程了
2. 我遇到的一些麻烦
说完了基本知识,再来说说我遇到的一些问题吧。为了演示明白,代码如下:
DeepCloneObject deepclone = new DeepCloneObject(); Parallel.ForEach(nameValues, dic => { AcceptArgument argument = (AcceptArgument)deepclone.CopyObject(accCommon); copyaccCommon.data.coverageList = aq.coverageList; ParallelInvokeInterface(handle._uri, dic, copyaccCommon); });
在来看看ParallelInvokeInterface函数:
private void ParallelInvokeInterface(string uri, Insurance insurance, AccurateCommon accCommon) { accCommon.data.insurerCode = insurance.InsuranceCode; string response = RealInvokeInterface(uri, accCommon); ResponseRefference responseRefference = JsonHelper.Deserializer(response); if (responseRefference != null && responseRefference .State == "1") { responseRefference.Data.Each(p => { if (p.State == "1") { string price = "0.00"; p.CiPremium = p.CiPremium ?? price; p.BiPremium = p.BiPremium ?? price; p.CarShipTax = p.CarShipTax ?? price; m_result.AddOrUpdate(insurance, responseRefference, (str, rrp) => rrp); } }); } }
以上是关于关于并发的那些坑儿的主要内容,如果未能解决你的问题,请参考以下文章