multithreading - Future Protections in Managed Languages and Runtimes -


In the future, will the Runtime provide additional protection against issues related to soft data corruption?

Managed runtime, such as Java and .NET CLR, is generally to reduce or eliminate the possibility of many memory corruption worms in native languages ​​like C #. Nonetheless, they are not surprisingly immune to all memory corruption problems, an intermediate hope that a method that confirms its input is no bug, and with a fairly handling exceptions, always an object is valid Will change from state to second, but it is not so. (It is fair to say that this is not using the prevailing programming conventions - object applicants need to avoid the problems I have told.)

Consider the following scenarios:

< Ol>
  • The threading collar can share the object with another thread and make a concurrent call on it. If the object does not apply locking, then the field may be corrupted (probably - unless it is notified that the object is thread-protected - to run an exception to runtime, each method must use a hug on the call, the same Performing an object together on another thread on the object. This will be a security feature and the other well-accepted security features of managed runtimes Like, there is some cost in it.)

  • The re-login method creates a callout with an arbitrary function (such as an event handler), which eventually calls methods on that object Who does not want to call at this point. This thread is also complicated by security and many class libraries do not get this right. (Worse, class libraries are known for poor documentation that what is allowed to enter again).

  • For all these cases, this should be argued The whole document is a solution. However, the documentation can also write how to allocate memory in unmanaged languages ​​and remove memory. We know from experience (for example, with memory allocation) that the difference between document and language / runtime enforcement is night and day.

    What can we hope to do in future with languages ​​and runtime to protect us from these problems and other subtle problems like them?

    I think languages ​​and runtime will keep moving forward, continue to remove issues from developers, and Keep making our lives easier and more productive.

    Take your example - Threading To simplify the threading model that we use daily, there are some great new features on the horizon in the .Net World. Eventually, the shared state can handle more, more secure, for example. NAT 4 has been made easier to thread the life than the current technologies.


    Comments

    Popular posts from this blog

    asp.net - Javascript/DOM Why is does my form not support submit()? -

    sockets - Delphi: TTcpServer, connection reset when reading -

    javascript - Classic ASP "ExecuteGlobal" statement acting differently on two servers -