|
hello to you all,
i'm really interested to start and use the visual studio .net 2005 with the lang' of C# for my real-time applications. all the goodies in the C# lang' can really make me work faster but i have to know if it support real-time constrains.
is there a way to meke RT apps with C#?
or the .net framework is not RT compadable?
i really love to hear a response to this important issue.
tnx in advance,
Eli
|
|
|
|
|
No. The nondeterministic garbage collector makes any RT usage impossible.
|
|
|
|
|
tnx!
i really hoped to take the advantages of the C# lang', but i guess it is impossible.
maybe someone will make it possible in the future.
|
|
|
|
|
Look for a good C++ class library (ask in the c++ forum). The automatic memory management of NET will never be doable in an RT system because the app cannot run while the GC is moving everything around.
|
|
|
|
|
maybe there is an option to controll the GC... do you know something about it?
but is the GC is the only thing that makes NET uncompatable for RT system ? what are the other things?
tnx very much for all youe response...
|
|
|
|
|
eninyo wrote: maybe there is an option to controll the GC... do you know something about it?
There is not. You can force a collection but excluding exceptional circumstances* you shouldn't because you'll generally worsen your apps performance, but there is no way to prevent the runtime from calling it whenever it feels a need to do so.
AFAIK, the GC is the only true killer for an RT system. The standard .net timer is only good to ~10ms resolution, but there are more CPU itensive alternatives available in win32 (see multimedia timer) that can provide finer grained control at the cost of 20-50% cpu load for the timer alone.
* ie getting rid of something like ArrayOfFiftyMillionInts.
|
|
|
|
|
Please don't cross post.
---
b { font-weight: normal; }
|
|
|
|
|
No just for the fact its an Enterprise Framework that potentially generated MSIL and CLR byte-code thats run on some type of 'virtual machine' runtime. Its like Java all over again but imho alot cleaner.
|
|
|
|
|
There indeed is the GC that you must be careful for, but...
you can design your app to not create any garbage. There are several ways to achieve this: one is to do object pooling, so you put objects back in the pool when you want to get rid of them. The other one is to use structs for temporary objects that are created on the stack.
Wout
|
|
|
|
|
hi'
tnx for yours reply. i posted this Q long while ago and it nice to still get replys.
anyhow, your solution look nice but still - the GC will invoke to check if there something to clean in that case also. and then it will halt all others task without any warrning.
therefor, the solution to create object pooling will be great idea but the GC will invoke anyway although there won't be anything to clean.
after alot of answer i got the big picture - at this moment microsoft doesn't suuport RT development. i think it won't support it in the future too, because microsoft decided to concentrate on web-development. in that case. VS.Net 2005 is a great tool.
yours,
Eli
|
|
|
|
|
eninyo wrote: at this moment microsoft doesn't suuport RT development. i think it won't support it in the future too, because microsoft decided to concentrate on web-development. in that case. VS.Net 2005 is a great tool.
MS has never supported RT dev because windows is not, and never has been, an RT OS. The .net GC makes the situation somewhat worse, but even native apps don't have any RT promises due to the vagarities of the scheduler.
|
|
|
|
|
Hmmm, digging in my memory I think the GC only goes to work if garbage actually exists. But you'll have to dig into the documentation to verify that yourself! I give my memory an 80% chance that it's right
Wout
|
|
|
|
|
tnx.
i'll try to dig in to it, but it make sence that it is working anyhow. i mean that if there is no garbge, the GC doesn't know it, in order to verify that there is nothing to clean it has to invoke, therefore i'm not sure you right.
i will check it anyhow.
i find it very hard to get knowlage about the GC (i mean real and theoretical information), so if you can help me with that i'll be be thankful.
tnx for all your answer...
|
|
|
|
|
Just what do you mean by real-time? How 'hard' are your constraints? In general you cannot get real-time performance from a Windows system ( and that's before you consider the issues caused by managed code with automatic garbage collection ).
Please refer to this excellent article here on code project: http://www.codeproject.com/system/simpletime.asp[^]
Regards,
Dan
Remember kids, we're trained professionals. Don't try this at home!
|
|
|
|
|
One other characteristic of C# to keep in mind is that JIT compilation introduces unpredictable execution times. This is probably more noticeable in small embedded environments such as WinCE platforms. I have experienced "hits" of 100+ msec while small functions are compiled, other times they require only 20+ msecs to execute. Apparently the WinCE CLR provides only a relatively small buffer (64K?) of compiled code. When this becomes full, something must be purged to compile the next new block. So you see the "hit" somewhat unpredictably.
Also no way to generate pre-compiled binaries (genx) in WinCe.
|
|
|
|
|
tnx for your reply after so long time
unfortunatly, i didn't find solution for the GC invoking unexpectedly.
i guess the C# lang' is for simple or not RT applicatons.
tnx again,
Eli
|
|
|
|
|
Hi,
I am Ravindra,currently applying for jobs based on .net.
I want to know how much boom is there for .net ?
and
whether a deep knowledge in SQL server is must for a .net programmer?
please send me the details
---Ravindra
|
|
|
|
|
I would think that a knowledge of ADO.NET would be good. Somethings for a "deep knowledge of SQL Server" would be index tuning, and file groups, and optimizing the database. Most .NET developers will not need this. A standard knowledge of ADO.NET and basic database skills are needed in my mind.
Steve Maier, MCSD MCAD MCTS
|
|
|
|
|
yea Steve, i completely agree with your views
There would be a specialized team that handles db issues.
|
|
|
|
|
I would be interested in any jobs involving C++/CLI, but "C++/CLI" is useless as a search term to use in searches.
Managed as in Managed C++ can appear in context unrelated to "Managed C++". CLI of course is a common TLA for Command Line Interface.
I think that the only hope for these types of jobs is to convince any company you join that has a lot of C++ code and coders who are thinking of using C# the advantages of keeping the in house knowledge and experience and staying with C++ and using C++/CLI where possible.
|
|
|
|
|
I have noticed that a vast majority of the jobs returned by job search engines seem to be Banking and Finance related. Whilst without any knowledge of the programming side of these types of jobs, at first glance it does not seem the kind of job I would be interested in, as I do not know what type of C++ language features usually get used in the design of such software. However this might be an ill-informed view. Can you advise me?
My current job is quite limited in the scope of what is done with C++, whilst there are classes/objects used in the applications there is not much use of inheritance. We use STL and make use of vectors,maps,sets and some associated algorithms, but not boost/loki.
Now obviously no job is always going to be using everything available, but I would like to make more use of the full power of C++.
--------------------------------------------------------------------------
One last thing, I would be interested in any jobs involving C++/CLI, but it really needs a better buzzword to help in searches. Managed as in Managed C++ can appear in context unrelated to "Managed C++". CLI of course is a common TLA for Command Line Interface.
I think that the only hope for these types of jobs is to convince any company you join that has a lot of C++ code and coders who are thinking of using C# the advantages of keeping the in house knowledge and experience and staying with C++ and using C++/CLI where possible.
I will post this section again separately just in case it is easier to answer the first section without the thread drifting.
|
|
|
|
|
Stone Free wrote: One last thing, I would be interested in any jobs involving C++/CLI
Why would you flog a dead horse? The Windows programming language is C#, at least for the next 20 years.
|
|
|
|
|
Well a lot of help you are, and anyway I think you should tell Herb Sutter and Nish as they obviously don't know they are wasting their time
|
|
|
|
|
Most likely they want you to be really good at object oriented programming and multithreaded programming. If you are applying for a server position you should also know socket programming. Managed C++ is not used here on Wall Street unless to build a wrapper around some legacy C++ code so it can be called from C# code. C# is becoming more common, specially for frontend applications.
|
|
|
|
|
Thanks for your reply Patric, I was beginning to think no one on codeproject worked in finance!
|
|
|
|