Skip to content

Remove COM initialization from object and enforce correct handling via asserts#601

Merged
dblock merged 1 commit intojava-native-access:masterfrom
matthiasblaesing:COMThreading
Feb 29, 2016
Merged

Remove COM initialization from object and enforce correct handling via asserts#601
dblock merged 1 commit intojava-native-access:masterfrom
matthiasblaesing:COMThreading

Conversation

@matthiasblaesing
Copy link
Copy Markdown
Member

The custom thread instantiated in the c.s.j.p.w.C.util.ProxyObject and
then used as a dispatch for COM calls is a bootleneck and not following
COM convention.

If COM is initialized for a thread as COINIT_MULTITHREADED there is no
reason to force dispatch through a central thread and if it is
COINIT_APARTMENTTHREADED a message queue is needed:

https://msdn.microsoft.com/de-de/library/windows/desktop/ms695279%28v=vs.85%29.aspx

The change introduced here removes the dispatcher thread and the
initialization routines from COMBindingBaseObject. In their place asserts
are placed, that enforce correct COM initialization. The tests were
adjusted accordingly.

…a asserts

The custom thread instantiated in the c.s.j.p.w.C.util.ProxyObject and
then used as a dispatch for COM calls is a bootleneck and not following
COM convention.

If COM is initialized for a thread as COINIT_MULTITHREADED there is no
reason to force dispatch through a central thread and if it is 
COINIT_APARTMENTTHREADED a message queue is needed:

https://msdn.microsoft.com/de-de/library/windows/desktop/ms695279%28v=vs.85%29.aspx

The change introduced here removes the dispatcher thread and the
initialization routines from COMBindingBaseObject. In their place asserts
are placed, that enforce correct COM initialization. The tests were
adjusted accordingly.
@dblock
Copy link
Copy Markdown
Member

dblock commented Feb 29, 2016

👍

dblock added a commit that referenced this pull request Feb 29, 2016
Remove COM initialization from object and enforce correct handling via asserts
@dblock dblock merged commit c76c9ff into java-native-access:master Feb 29, 2016
@matthiasblaesing matthiasblaesing deleted the COMThreading branch March 3, 2016 19:00
mstyura pushed a commit to mstyura/jna that referenced this pull request Sep 9, 2024
Motivation:

We should use a more sane default value then 1 for MAX_MESSAGES_PER_READ
that also match our other Channel implementations

Modifications:

Use 16 as default value

Result:

Less overhead and more consistent
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants