2016-04-20 2 views
-2

Gibt es einen Compiler oder eine Laufzeitumgebung, die implizite asynchrone Programmierung unterstützt oder plant?Gibt es eine Sprache, einen Compiler oder eine Laufzeitumgebung, die implizite asynchrone Programmierung unterstützt?

Zum Beispiel

public List<Product> findProductByIdWithSOsAndPOs(int id){ 

    //The next 3 tasks can be done in asynchronously 

    //task 1.a may take a while 
    Product product = productRepo.findById(id); 

    //task 1.b may take a while 
    List<SalesOrder> salesOrders = salesOrderRepository.findAllByProductId(id); 

    //task 1.c may take a while 
    List<PurchaseOrder> purchaseOrders = purchaseOrderRepository.findAllByProductId(id); 

    //the runtime is smart enough to know that this task depends 
    //on the previous 3 (1.a, 1.b and 1.c) and won't perform this 
    //until they are complete without any special syntax (await, 
    //wrapping in future.map, callbacks, etc.) 
    //task 2 
    Product productWithSOsAndPOs = new Product(product.id, product.name, salesOrders, purchaseOrders); 

    //the runtime is also smart enough until all the tasks are complete 
    //task 3 
    return productWithSOsAndPOs; 
} 
+1

Es ist nicht klar, was Sie genau fragen, bitte erklären Sie in Ihren eigenen Worten, was Sie suchen. Das obige ist C#, also nehme ich unter Windows an? Die CLR bietet bereits mehrere Möglichkeiten zum Ausführen von asynchronen Tasks und für die parallele Programmierung. –

+0

Es kann C# oder Java sein. Ich versuchte so allgemein wie möglich zu sein, um es verständlicher zu machen. Ich interessiere mich nicht wirklich für die Sprache. Ich frage, ob es eine Sprache gibt, die asynchrone Programmierung ohne spezielle Syntax ausführt. Zum Beispiel glaube ich an C#, dass Sie async/await verwenden würden, aber stattdessen kann die Laufzeit angeben, was Sie versuchen, parallel durch den Kontext zu laufen. – decapo

+0

Es gibt einige Sprachen, die eine parallele Programmierung als Konzept erster Ordnung haben. Alles wird eine gewisse Syntax haben. – user2864740

Antwort

1

In .NET die Tasks.Parallel Bibliothek macht die Dinge ziemlich natürlich. Es gibt immer ein gewisses Maß an Syntax, aber das kommt nur mit dem Territorium. Parallele Programmierung kann schwierig sein, und der Compiler kann nicht immer genau sagen, was Sie gerade tun, wenn mehrere Threads beteiligt sind. Die Verwendung von Entity Framework auf Ihrer Datenschicht kann die Dinge wirklich vereinfachen, da die asynchronen Aufrufe für Sie generiert werden.

+0

Danke. Das ist nicht wirklich das, was ich frage. Nachdem ich mich mehr umgesehen habe, glaube ich nicht, dass irgendjemand das tut, was ich frage, und ich denke, deshalb ist es schwierig, etwas auszudrücken. Der Code, den ich oben geschrieben habe, ist ein gültiger Code in einem blockierenden Kontext (d. H. Er gibt ein Ergebnis zurück, wenn alles korrekt funktioniert). In einer nicht blockierenden Umgebung gibt dieser Code jedoch möglicherweise kein Ergebnis zurück. Sie müssen zusätzlichen Code wie "erwarten" hinzufügen, damit er zuverlässig funktioniert, aber wenn ich den Code lese, kann ich verstehen, was laufen muss und auf ein Ergebnis warten muss. Ich frage, ob irgendeine Sprache/Compiler/Laufzeit diese nativ unterstützt. – decapo

Verwandte Themen