<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:arial, helvetica, sans-serif;font-size:10pt"><div>Is there a Mono equivalent of Microsoft's CorFlags.exe tool?</div><div><br></div><div style="font-family:arial, helvetica, sans-serif;font-size:10pt"><br><div style="font-family:arial, helvetica, sans-serif;font-size:13px"><font size="2" face="Tahoma"><hr size="1"><b><span style="font-weight: bold;">From:</span></b> Yury Serdyuk &lt;Yury@serdyuk.botik.ru&gt;<br><b><span style="font-weight: bold;">To:</span></b> Jérémie Laval &lt;jeremie.laval@gmail.com&gt;<br><b><span style="font-weight: bold;">Cc:</span></b> mono-list@lists.ximian.com<br><b><span style="font-weight: bold;">Sent:</span></b> Wed, July 7, 2010 5:59:32 AM<br><b><span style="font-weight: bold;">Subject:</span></b> Re: [Mono-list] PFX still doesn't work correctly (in Mono 2.6.4)<br></font><br>
One more remark -<br><br>though in the program<br><br>&gt; using System;<br>&gt; using System.Threading;<br>&gt;<br>&gt; public class Test_PFX_For {<br>&gt;<br>&gt;&nbsp; public static void Main ( String[] args ) {<br>&gt;<br>&gt;&nbsp;  int num_threads = Convert.ToInt32 ( args [ 0 ] );<br>&gt;<br>&gt;&nbsp;  ParallelOptions po = new ParallelOptions<br>&gt;&nbsp;  {<br>&gt;&nbsp; &nbsp; MaxDegreeOfParallelism = num_threads<br>&gt;&nbsp;  };<br>&gt;<br>&gt;&nbsp;  Parallel.For ( 0, 100, po, i =&gt;<br>&gt;&nbsp;  {<br>&gt;&nbsp; &nbsp; long k = 0;<br>&gt;&nbsp; &nbsp; while ( true ){<br>&gt;&nbsp; &nbsp;  k++;<br>&gt;&nbsp; &nbsp;  k--;<br>&gt;&nbsp; &nbsp; }<br>&gt;&nbsp;  });<br>&gt;&nbsp; }<br>&gt; }<br><br>ParallelOptions mode works good, but it seems in the Parallel.Invoke <br>construction<br>it doesn't act. Is it true ?<br><br>The test code for Parallel.Invoke is:<br><br>&gt; using System;<br>&gt; using System.Threading;<br>&gt; using
 System.Diagnostics;<br>&gt; using <a target="_blank" href="http://System.IO">System.IO</a>;<br>&gt;<br>&gt; namespace QuickSort<br>&gt; {<br>&gt;&nbsp; &nbsp;  class Program<br>&gt;&nbsp; &nbsp;  {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;  static void q_sort(int[] array, int left, int right, bool <br>&gt; forceSequential)<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;  {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  int current, last;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if (left &gt;= right) return;<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  swap(array, left, (left + right) / 2);<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  last = left;<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  for (current = left + 1; current &lt;= right; ++current)<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if (array[current] &lt; array[left])<br>&gt;&nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  ++last;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  swap(array, last, current);<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  }<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  }<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  swap(array, left, last);<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  if (forceSequential || (last - left) &lt; 4096)<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  q_sort(array, left, last - 1, forceSequential);<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  q_sort(array, last + 1, right, forceSequential);<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  }<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  else<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
 &nbsp;  {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  Parallel.Invoke(<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  po,<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  delegate { q_sort(array, left, last - 1, <br>&gt; forceSequential); },<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  delegate { q_sort(array, last + 1, right, <br>&gt; forceSequential); });<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  }<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;  }<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;  static void swap(int[] array, int i, int j)<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;  {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  int temp;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  temp = array[i];<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  array[i] = array[j];<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  array[j] = temp;<br>&gt;&nbsp;
 &nbsp; &nbsp; &nbsp;  }<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;  static ParallelOptions po;<br>&gt;<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;  static void Main(string[] args)<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;  {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  int P = System.Convert.ToInt32 ( args [ 0 ] );<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  FileStream&nbsp;  fs = new FileStream ( args [ 1 ], <br>&gt; FileMode.Open, FileAccess.Read );<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  StreamReader sr = new StreamReader ( fs );<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  int&nbsp;  N = System.Convert.ToInt32 ( sr.ReadLine() );<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  Console.WriteLine ( "N = " + N );<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  int[]&nbsp; array = new int [ N ];<br>&gt;<br>&gt;&nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  DateTime dt1 = DateTime.Now;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  for ( int i = 0; i &lt; N; i++ )<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; array [ i ] = System.Convert.ToInt32 ( sr.ReadLine() );<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  DateTime dt2 = DateTime.Now;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  Console.WriteLine ( "read_data: " + <br>&gt; (dt2-dt1).TotalSeconds + " sec." );<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  sr.Close();<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  fs.Close();<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  po = new ParallelOptions<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MaxDegreeOfParallelism = P<br>&gt;&nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  };<br>&gt;<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  //<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  // Sequential<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  //<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  //dt1 = DateTime.Now;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  //q_sort(array, 0, array.Length - 1, true);<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  //dt2 = DateTime.Now;<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  //Console.WriteLine("Sequential: {0} sec.", <br>&gt; (dt2-dt1).TotalSeconds );<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  //<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  // Parallel<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  //<br>&gt;<br>&gt;&nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  dt1 = DateTime.Now;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  q_sort(array, 0, array.Length - 1, false);<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  dt2 = DateTime.Now;<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  Console.WriteLine("Parallel: {0} sec.", <br>&gt; (dt2-dt1).TotalSeconds);<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;  }<br>&gt;<br>&gt;&nbsp; &nbsp;  }<br>&gt;<br>&gt; }<br><br>Thanks.<br><br>Yury.<br><br>_______________________________________________<br>Mono-list maillist&nbsp; -&nbsp; <a ymailto="mailto:Mono-list@lists.ximian.com" href="mailto:Mono-list@lists.ximian.com">Mono-list@lists.ximian.com</a><br><span><a target="_blank" href="http://lists.ximian.com/mailman/listinfo/mono-list">http://lists.ximian.com/mailman/listinfo/mono-list</a></span><br></div></div><div style="position:fixed"></div>


</div><br>

      </body></html>