|
|
Member 4116875 wrote: how many threads can be run at a given point of time?
Well, that solely depends on time. Intel processors are known to run more threads well in the early morning, whereas AMD processors can run an enormous number of threads after sunset. That's why I run a dual processor machine (one AMD and one intel) with "hot-swap processor slot". I just plug in the faster processor and remove the slower one during morning and evening.
*blows smoke away*
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->Rajesh<-·´¯`·.
Codeproject.com: Visual C++ MVP
|
|
|
|
|
I also believe that more threads can be run today than say, 15 years ago.
Perhaps wiser counsel could explain why this should be so.
I suspect that in 20 or 30 years time, more threads could be run. Enough perhaps to spin a suit that could be worn for a job interview where Reading is not required.
------------------------------------
I try to appear cooler,
by calling him Euler.
|
|
|
|
|
Hilarious!
Any more visits down South?
Cheers,
Vikram.
"I will put my new found knolage to good use" - Captain See Sharp.
"Every time Lotus Notes starts up, somewhere a puppy, a kitten, a lamb, and a baby seal are killed." - Gary Wheeler.
|
|
|
|
|
Vikram A Punathambekar wrote: Any more visits down South?
Probably there will be a quarterly general body meeting during sometime between the end of this month and the middle of March. I'll be there if they ask me to give a presentation on the new features and progress of our current project. There's a load of work to be done before that and I really wish they postpone that meeting, or else I'd have nothing to present to the chair persons.
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->Rajesh<-·´¯`·.
Codeproject.com: Visual C++ MVP
|
|
|
|
|
How many do you want to be able to handle at any given point in time?
|
|
|
|
|
50,000 assuming 8 years of 20 threads a day.
|
|
|
|
|
Member 4116875 wrote: how many threads can be run at a given point of time?
It depends how fit they are, how many leads you've got and how many races you've entered them in.
|
|
|
|
|
In the name of a serious answer - it's a very large number, basically limited by
physical/virtual memory, depending on the threads size (don't forget that by default, many threads often have a 1Mbyte stack allocation in Win32!)
But if you have a ridiculously high number of active unblocked threads, expect very poor performance...
Mike
|
|
|
|
|
Mike Diack wrote: In the name of a serious answer - it's a very large number
The practical limit on the number of threads of execution has little to do with the 'size' of a thread (code size? data size?). It has far more to do with the kernel's ability to switch context between threads and still leave a useful amount of CPU time for all threads to execute.
Mike Diack wrote: many threads often have a 1Mbyte stack allocation in Win32
The stack doesn't get allocated into the process working set until it's used.
Software Zen: delete this;
|
|
|
|
|
Fibers, you should be using fibers and a stint of gardening to put things into perspective.
WPF - Imagineers Wanted
Follow your nose using DoubleAnimationUsingPath
|
|
|
|
|
Meaning the total number of threads that the OS can support, or the total number of threads that your app can launch successfully? I believe that the former is limited by the amount of resources available to the OS (having 4GB installed means nothing if only 256MB are used internally by the OS).
The latter is limited much the same, except that it also gains a limitation from the application itself. Since a thread's stack space comes from the address space of the process, you can create enough threads that you run out of available thread space. You can do the same thing by creating threads without cleaning them up (or closing their handles) - the address space used by the thread will not get recovered, and even though you have memory available, you have "no place to put it."
Peace!
-=- James Please rate this message - let me know if I helped or not!<hr></hr> If you think it costs a lot to do it right, just wait until you find out how much it costs to do it wrong! Remember that Professional Driver on Closed Course does not mean your Dumb Ass on a Public Road! See DeleteFXPFiles
|
|
|
|
|
Hi,
Firstly, Thanks for your reply. It is helpful.
Yes I meant The total number of threads that my app can launch successfully.
Say if I have 1,00,000 threads quequing up, will my app be able to handle it?
Thanks in Advance
Ranjini
|
|
|
|
|
Member 4116875 wrote: Yes I meant The total number of threads that my app can launch successfully.
Say if I have 1,00,000 threads quequing up, will my app be able to handle it?
You can have a try now!
(Remember that
1: 'suspended',
2: 'resumed' with WaitForXXObject, and
3: 'resumed' with Sleep(n)
are different. )
Maxwell Chen
|
|
|
|
|
And also it cannot cross one more limit, the numbers that can uniquely represented by the Value of HANDLE, Say HANDLE is a 32 bit value, then 2 power 32 is the limit as each thread is represented by a HANDLE.
|
|
|
|
|
Are you kidding?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
I was,
I am not sure, but since thread is represented by HANDLE, the number of threads also depends on this data Isn't it?
I agree hardware resource will retrict. but assume if infinite hardware, then comment on the above
|
|
|
|
|
Rajkumar R wrote: I am not sure, but since thread is represented by HANDLE, the number of threads also depends on this data Isn't it?
Of course.
Rajkumar R wrote: I agree hardware resource will retrict. but assume if infinite hardware, then comment on the above
Assuming infinite hardware, you may have even a bigger number of thread, since HANDLE definition is
typedef PVOID HANDLE;
i.e. architecture dependent.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
Yes, I mean even if we have enough h/w resource (not infinite) that can run more than 2 power 32 threads (I think this is possible, what do you say?) on machine in which PVOID is 32 bit, the HANDLE is restricting isn't?
|
|
|
|
|
Well, on such a machine, a kind of thread-handle-bank-switching will be required!
(i.e. the revenge of the INTEL 16 bit architecture)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
thread handle bank also does have limit only we can increase the limit
|
|
|
|
|
Rajkumar R wrote: HANDLE is a 32 bit value, then 2 power 32 is the limit as each thread is represented by a HANDLE
Thread HANDLEs and many other kernel object HANDLEs are always a multiple of 4 because the last two bits of the HANDLE are always zero. The last two low order bits can be used as TAG bits.
Best Wishes,
-David Delaune
|
|
|
|
|
so it is even less 2 power 30
|
|
|
|
|
One thread per processor is all the threads that can run at a given point of time.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
It is not valid for HT (Hyper threading) machine, one processor multiple execution chain
|
|
|
|