1

SQLテーブルからデータを読み取り、処理し、終了したらDBのフィールドを更新する(processed = trueに設定)という単純なタスクがあるため、すべてのレコードを1回だけ処理する必要があります。

マルチスレッド化するためにどのような手法を使用できますか?つまり、複数のスレッドでテーブルからデータを読み取ります。

4

2 に答える 2

2

オーバーラップせずに複数のスレッドでデータを読み取りたい場合は、ページングを試してみてください。各スレッドに異なるページを読み取らせることができます。たとえば、最初のスレッドに最初の20レコードを読み取らせ、それらの各レコードを処理してから、それぞれにprocessed = trueを設定し、2番目のスレッドが次の20レコードに対して同じことを行うようにすることができます。

複数のスレッドでのページングの詳細については、このリンクを確認してください。 http://ericniemiec.wordpress.com/2010/06/10/paging-records-in-sql-server-2008-for-processing-database-records-on-different-threads-in-c/

于 2013-03-03T19:30:29.203 に答える
1

efを使用してDataContextを使用する場合は、DataContextがスレッドセーフではないことを知っておく必要があります。MsSQLのようなデータベース管理システムはスレッドセーフです。私はこの質問を読んだあなたを好む

于 2013-03-03T18:57:47.920 に答える