Compartilhar via


Tipos de thread do distribuidor de recursos COM+

As chamadas para um distribuidor de recursos COM+ podem ter origem em um dos seguintes tipos de thread:

  • Thread de apartamento (STA)
  • Thread gratuito (MTA)
  • Thread não COM (aplicativo ou o gerenciador de distribuidores de thread do coletor de lixo)

Se um distribuidor de recursos não for um objeto COM, ele deverá ser capaz de lidar com chamadas que chegam de qualquer thread a qualquer momento. Se um distribuidor de recursos for um objeto COM, o objeto COM deverá ser registrado com um modelo de threading de Ambos. Isso permite que threads STA ou MTA criem e usem o distribuidor de recursos sem um comutador de thread.

Se um distribuidor de recursos criar e usar outro objeto COM (por exemplo, um gerenciador de recursos fora de processo), o distribuidor de recursos poderá precisar manter vários proxies para esse outro objeto COM e garantir que as chamadas para o objeto sejam feitas usando o proxy apropriado para o thread de chamada. Quando o distribuidor de recursos cria esse objeto, ele faz marshaling e salva a referência. Antes de chamar o objeto novamente, ele deve cancelar omarshal para criar um proxy para o thread de chamada.

Pode ser mais eficiente armazenar em cache esses proxies por thread mantendo um mapa da ID do thread para um ponteiro de proxy. Esse mapa se expande à medida que novos threads são usados no processo.

conceitos do distribuidor de recursos com+