As for the question of "When will more of NX become a multithread application...?" as was already mentioned, this is not as simple as just recompiling your code. You have to look for opportunities where multiple operations actually could be executed in parallel in such a way that when you got done the results could be 'put back together' properly since in the end the delivery to the user is still going to be a serial event, i.e. seeing a result on the screen.
Now there is research being done, particularly in the basic tools, such as Parasolid and the analytical solvers, where there are more chances of opportunities and where we have done some work which has resulted in at least somewhat leveraging these multi-core architectures, but even then we have to make sure that we actually get a benefit since just because you CAN create a multithreaded application doesn't mean that it will pay off in the end since there is some additional overhead at run time and certainly a lot of extra work during the design, compiling and integrating stages of the software development process.
But that being said, when something does come along which is fairly easy to do, we have taken advantage of it. For example, when we introduced in NX 6.0 the ability to capture an AVI video from within NX, if you're running on a multi-core system, even though this is task is launched from within the NX session, the code that is capturing the video frames and assembling them into a movie is being run in a separate 'thread'. Also, more recently, the Manufacturing people added a new scheme whcih will allow you to launch a toolpath generation and then immediately return to your interactive session while the actual computation is taking place behind-the-scene. In this case, like the video capture example, the process which is computing the tool path is actually being run in another thread. Now this is different than a simple batch-program in that you could start several of these toolpath generation operations all from the same NX session and when completed you will be able to immediately see the results in your current session just as if you had run them interactively and simply waited for the results before you could continue.
Now granted, these two examples when you think about them, were a sort of no-brainers since we didn't have to make any really big changes to our existing code, just make it possible to spawn totally separate tasks which were still known to NX and which would eventually deliver something to the user without him having to do anything special. Which brings us to the last point, and that is that while NX itself may only have limited opportunities to leverage multi-core architectures, generally NX is NOT the only process running on your desktop at any one time, so having a multi-core system, even if you never actually run ANY mutlithreaded applications, will still give you an advantage if you're running more than one program. For example, at this instant, just the applications which I can interact with, I have MS IE running (obviously since I'm responding to a internet site), MS Outlook for my regular email, Windows Live Mail being used as a 'newsreader' to access a traditional bulletin-board system and TWO difference sessions of NX. So you see, I'm taking advantage of a lot of the multi-threading 'capabilities' of my Intel i7 quad-core, Dell M4500 laptop, even if any single application is NOT.
John R. Baker, P.E.
Product 'Evangelist'
Product Design Solutions
Siemens PLM Software Inc.
Industry Sector
Cypress, CA
To an Engineer, the glass is twice as big as it needs to be.