Maple が外部で定義されたルーチンを呼ぶ場合、そのルーチンはスレッドセーフでないものと見なします。従って、Maple は 1 つのスレッドで外部コード内に入っているとき、他のスレッドが外部ルーチンを呼ぶことを禁止します。このことから、コードが外部ルーチンを並列に呼ぼうとしている場合、実行速度に影響します。自分で外部ルーチンを定義する場合は、define_external の THREAD_SAFE 引数を指定して、Maple にその外部ルーチンがスレッドセーフであることを伝えることができます。こうすることで、Maple がスレッドセーフな外部ルーチンを呼ぶときに他のスレッドが外部コードに入ることを禁止しないようにできます。
|