Hmmm...
[kevin@localhost ~]$ cat >test.cpp <<EOF
> #include <iostream>
> #include <map>
> #include <windows.h>
>
> struct MyException
> {
> };
>
> static DWORD WINAPI MyCallback (LPVOID)
> {
> try
> {
> throw MyException ();
> }
> catch (MyException& e)
> {
> }
>
> return 0;
> }
>
> int main()
> {
> const int count = 100;
> std::map<int, HANDLE> threads;
> DWORD id;
>
> std::cout << "CREATE THREADS" << std::endl;
>
> for (int i = 0; i < count; ++i)
> threads[i] = CreateThread (NULL, 0, &MyCallback, 0, CREATE_SUSPENDED, &id);
>
> std::cout << "START THREADS" << std::endl;
>
> for (int i = 0; i < count; ++i)
> ResumeThread (threads[i]);
>
> Sleep (1000);
>
> return 0;
> }
> EOF
[kevin@localhost ~]$ i386-mingw32-g++ -Os -s test.cpp -o test.exe
[kevin@localhost ~]$ wine test.exe
CREATE THREADS
START THREADS
[kevin@localhost ~]$ wine test.exe
CREATE THREADS
START THREADS
[kevin@localhost ~]$ wine test.exe
CREATE THREADS
START THREADS
[kevin@localhost ~]$ wine test.exe
CREATE THREADS
START THREADS
[kevin@localhost ~]$ wine test.exe
CREATE THREADS
START THREADS
[kevin@localhost ~]$ wine test.exe
CREATE THREADS
START THREADS
[kevin@localhost ~]$ wine test.exe
CREATE THREADS
START THREADS
[kevin@localhost ~]$ uname -r
2.6.27.21-78.2.41.fc9.i686