程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Parallel線程使用,parallel線程

Parallel線程使用,parallel線程

編輯:C#入門知識

Parallel線程使用,parallel線程


public void run(Action<List<string>> onload)
        {
            List<string> directoryLists = new List<string>();
            directoryLists = Directory.GetDirectories(m_importPath).ToList();          
            Parallel.ForEach(directoryLists,new ParallelOptions { MaxDegreeOfParallelism=10}, i =>
            {
                List<string> files = importer(i);

                onload(files);

           }

     }

 

Action<List<string>> onload = dir =>
            {
                BeginInvoke(new EventHandler((obj, even) =>
                {
                    var root = new TreeNode(dir[0]);
                    for (int i = 1; i < dir.Count; i++)
                    {
                        string fileName = dir[i].Substring(dir[i].LastIndexOf('\\') + 1);
                        root.Nodes.Add(fileName.Remove(fileName.IndexOf('.')));
                    }
                    this.treeView1.Nodes.Add(root);
                }), null);

            };

import.run(onload);


net Parallel 為何現在的項目使用這少?

因為大多數時候我們編寫代碼都是重在處理事務而不是效率
考慮到.net中大多數對象都不是線程安全的 parallel用起來局限性也很大
它也只能在處理密集計算的場合有些作用
parallel + LINQ 效率一個提升一個降低 幾乎和書寫原始的循環代碼效率相同了

真到了需要效率的場合 比如十萬級的循環我還是會考慮用parallel的。。
另外其實很多時候我們都不知不覺的在使用並行的特性了... 4.5的async和await也算一方面
何況asp.net本身執行模式就是多線程的...
 

什叫Oracle Parallel模式

Oracle Parallel用法Oracle技術 2011-03-23 15:51:08 閱讀105 評論0 字號:大中小 訂閱 .

一、Parallel

1. 用途

強行啟用並行度來執行當前SQL。這個在Oracle 9i之後的版本可以使用,之前的版本現在沒有環境進行測試。也就是說,加上這個說明,可以強行啟用Oracle的多線程處理功能。舉例的話,就像電腦裝了多核的CPU,但大多情況下都不會完全多核同時啟用(2核以上的比較明顯),使用parallel說明,就會多核同時工作,來提高效率。

但本身啟動這個功能,也是要消耗資源與性能的。所有,一般都會在返回記錄數大於100萬時使用,效果也會比較明顯。

2. 語法

/*+parallel(table_short_name,cash_number)*/

這個可以加到insert、delete、update、select的後面來使用(和rule的用法差不多,有機會再分享rule的用法)

開啟parallel功能的語句是:

alter session enable parallel dml;

這個語句是DML語句哦,如果在程序中用,用execute的方法打開。

3. 實例說明

用ERP中的transaction來說明下吧。這個table記錄了所有的transaction,而且每天數據量也算相對比較大的(根據企業自身業務量而定)。假設我們現在要查看對比去年一年當中每月的進、銷情況,所以,一般都會寫成:

select to_char(transaction_date,'yyyymm') txn_month,

sum(

decode(

sign(transaction_quantity),1,transaction_quantity,0
)

) in_qty,

sum(

decode(

sign(transaction_quantity),-1,transaction_quantity,0
)

) out_qty

from mtl_material_transactions mmt

where transaction_date >= add_months(

to_date(

to_char(sysdate,'yyyy')||'0101','yyyymmdd'),

-12)

and transaction_date <= add_months(

to_date(

to_char(sysdate,'yyyy')||'1231','yyyymmdd'),

-12)

group by to_char(transaction_date......余下全文>>
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved