2011年软件设计师辅导:并行排序算法(3)
// Copy data to splited array
for ( int i = 0 ; i < processorCount; i ++ )
{
if (i == processorCount - 1 )
{
partArray[i] = new ParallelEntity(Status.Idle, new T[remain], comparer);
}
else
{
partArray[i] = new ParallelEntity(Status.Idle, new T[partLen], comparer);
remain -= partLen;
}
Array.Copy(array, i * partLen, partArray[i].Array, 0 , partArray[i].Array.Length);
}
// Parallel sort
for ( int i = 0 ; i < processorCount - 1 ; i ++ )
{
ThreadPool.QueueUserWorkItem( new WaitCallback(ThreadProc), partArray[i]);
}
ThreadProc(partArray[processorCount - 1 ]);
// Wait all threads finish
for ( int i = 0 ; i < processorCount; i ++ )
{
while ( true )
{
lock (partArray[i])
{
if (partArray[i].Status == ParallelSort < T > .Status.Finish)
{
break ;
}
}
Thread.Sleep( 0 );
}
}
第一考试网友情提示:如果您遇到任何疑问,请登录第一考试网考试辅导频道或添加qq:,第一考试网以“为考友服务”为宗旨,秉承“快乐学习,轻松考试!”的理念,旨在为广大考友打造一个良好、温馨的学习与交流平台,欢迎持续关注。以上是小编为大家推荐的《2011年软件设计师辅导:并行排序算法(3)》相关信息。
编辑推荐