首页 > 代码库 > 关于并发的那些坑儿

关于并发的那些坑儿

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); } }); } }

关于并发的那些坑儿