4Dv11 threading model

Mehboob Alam (7/21/08 9:00PM)
Julio Carneiro (7/22/08 1:20AM)
Brendan Coveney (7/22/08 10:10AM)
Charles Miller (7/22/08 3:09PM)
Danis Georgiadis (7/22/08 7:28PM)


Mehboob Alam (7/21/08 9:00 PM)

I ran across this strange error message when prototyping a new
application. I'm using 4Dv11 Standard Edition (not Developer Edition)
and a beta of Escape's QPix plugin.

"4D is current set to use the "NewThread" threading model, which is
not compatible with QPix and QuickTime. You must change 4D's threading
model to "longjmp" by editing the "ThreadingModel" key in 4D's
Info.plist file."

Q: Should I, and what would happen if I did?

PS: 4D crashed right after I hit the Continue button. Removed QPix,
and everything is fine.

sincerely,

mehboob alam

To make a bad day worse, spend it wishing for the impossible.

Julio Carneiro (7/22/08 1:20 AM)

I have no inside info on that and have no idea it making that change  

will solve your problem. (anyway you can always go back to whatever  

was in there before).

All I can say is that the 'longjmp' option hints to the 'old threading  

model', that is, 4D's internal threading technique which did not use  

OS native threading. 'longjmp' is a standard C function which is very  

helpful when rolling your own threading (which used to be that case  

with 4D till 2004).

So, my interpretation of that message is that Qpix/Quicktime do not  

run under 4D's new OD based threading mechanism and that you have to  

go back to use the old threading.

As I said, I'm only speculating here... 'longjmp' is what caught my  

attention as I used that same technique to implement threading way  

before SilverSurfer even existed (ouch!).

On Jul 22, 2008, at 1:00 AM, Mehboob Alam wrote:

I ran across this strange error message when prototyping a new  

application. I'm using 4Dv11 Standard Edition (not Developer  

Edition) and a beta of Escape's QPix plugin.

"4D is current set to use the "NewThread" threading model, which is  

not compatible with QPix and QuickTime. You must change 4D's  

threading model to "longjmp" by editing the "ThreadingModel" key in  

4D's Info.plist file."

Q: Should I, and what would happen if I did?

PS: 4D crashed right after I hit the Continue button. Removed QPix,  

and everything is fine.

sincerely,

mehboob alam

To make a bad day worse, spend it wishing for the impossible.

Brendan Coveney (7/22/08 10:10 AM)

All:

As Danis knows the change in threading was forced on us by Apple's new

threading model. Unfortunately we were blind sided by this ourselves
and

were forced into a quick change.

The Engineering team worked hard to come up with a workaround for
plug-ins

using the old threading model no longer supported by Apple and
changing the

plist is the way these plug-ins can continue to run. Obviously this is a

short term solution and is not officially supported by Apple so
hopefully we

can all make the transition to the new threading model ASAP.

Regards

Brendan

On 7/22/08 9:28 AM, "Danis Georgiadis" <dmg@... wrote:

Luckily 4D v11.2 fixed the bugs that prevented the old scheme from

working properly in v11.1, so now there's a simple and safe

workaround by editing the info.plist file.

Charles Miller (7/22/08 3:09 PM)

<99f910d50807221209h37d151f4t7b674247c60a9429@...

H Danis,

Does this mean for all of 4d client activity or only qpix related
activity?

TIA and Regards

Chuck

On Tue, Jul 22, 2008 at 12:28 PM, Danis Georgiadis <dmg@...
wrote:

The 2004/v11-compatible versions of QPix and the other Escape plug-ins
will

require Mac users to switch back to the old threading model.

The next generation of Escape plug-ins will require v11 and will
obviously

work with the new threading model of 4D.

Danis Georgiadis (7/22/08 7:28 PM)

Here's what happened: 4D's threading mechanism was suddenly changed  

in v11.1 from "longjmp" to "NewThread": in 11.0 it was "longjmp" and  

in 11.1 all of a sudden it was "NewThread".

For a complex plug-in like QPix, that interfaces with technologies  

which are not thread-safe themselves (such as QuickTime and TWAIN),  

the new threading scheme was simply unusable. Had we been told about  

this on time, we might have a chance to change our plans.

The v11-compatible version of QPix was being prepared with v11.0's  

threading scheme in mind. We were not prepared for such a fundamental  

change in v11.1 and there was no time to react: supporting the new  

scheme would require massive redesign of the plug-ins and loss of  

existing functionality.

Luckily 4D v11.2 fixed the bugs that prevented the old scheme from  

working properly in v11.1, so now there's a simple and safe  

workaround by editing the info.plist file.

The 2004/v11-compatible versions of QPix and the other Escape plug-

ins will require Mac users to switch back to the old threading model.

The next generation of Escape plug-ins will require v11 and will  

obviously work with the new threading model of 4D.

-Danis

Reply to this message

Summary created 7/22/08 at 6:21PM by Intellex Corporation

Comments welcome at: feedback@intellexcorp.com