[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 380

 
Integer:


Et nous y voilà. Dans votre code montré un peu plus haut, la mise en file d'attente n'est pas organisée. Et le fait qu'il ne soit pas recueilli par le système est ce dont nous parlons, et ce que vous devez faire par vous-même. Mais dans certains cas, c'est facile et simple à faire, et dans d'autres, il faudra beaucoup de code et de réflexion, car il n'existe pas d'outils spéciaux pour cela.

Vadim, vous avez une façon intéressante de parler, c'est comme si vous oubliez le sujet de la conversation ou que vous avez une sagesse particulière. D'abord vous avez montré le code et argumenté que l'ordre est respecté, et maintenant vous avancez la thèse-postulat que ce n'est pas garanti... Vous pouvez parfois vous contredire, mais ce n'est pas de la souplesse d'esprit.

Dim, une autre plainte ? La file d'attente est respectée en fonction des capacités du système. Que pouvez-vous exiger d'autre du système ?

Je n'ai jamais eu à organiser d'autres files d'attente. Le système a suffisamment de possibilités. Pour une raison quelconque, ils ne garantissent pas la mise en file d'attente au niveau du noyau. Mais l'exécution atomique est garantie.

 
Zhunko:

Dim, une autre plainte ? La file d'attente est maintenue en fonction de la capacité du système. Que pouvez-vous exiger d'autre du système ?

Je n'ai jamais eu à organiser d'autres files d'attente. Le système a suffisamment de possibilités. Pour une raison quelconque, il n'est pas garanti qu'il y ait une file d'attente au niveau du noyau. Mais l'exécution atomique est garantie.

Si les capacités du système le permettent, la mise en file d'attente n'est pas assurée. Mais vous avez commencé à soutenir qu'elle est fournie. Puis vous avez commencé à prouver qu'elle n'est pas assurée. Maintenant nous avons l'indulgence - que selon les possibilités du système :). Le fait que vous n'ayez jamais eu besoin de fournir une séquence dépend de votre approche de la programmation fondée sur des principes. Certaines des fonctions de votre bibliothèque bien connue nécessitent une mise en file d'attente. Puisque vous ne fournissez pas de file d'attente garantie, félicitations ! Je n'ai pas à me plaindre, mais il ne faut pas en faire tout un plat et tout couvrir d'un mythe de mystère, de secret et de quelque chose de plus que tout.

 
Merci ! !!
 
Integer:

Si elle est conforme aux capacités du système, cela signifie que l'ordre n'est pas assuré. Mais vous avez commencé à soutenir qu'elle est assurée. Puis vous avez commencé à prouver qu'elle n'est pas assurée. Maintenant c'est de l'indulgence - que selon les possibilités du système :) Le fait que vous n'ayez jamais eu besoin de fournir une séquence dépend de votre approche de la programmation fondée sur des principes. Certaines des fonctions de votre bibliothèque bien connue nécessitent une mise en file d'attente. Puisque vous ne fournissez pas de file d'attente garantie, félicitations ! Je n'ai pas à me plaindre, mais il ne faut pas en faire tout un plat et tout couvrir d'un mythe de mystère, de secret et de quelque chose de plus que tout.

Le système impose une file d'attente dans un ordre qui ne vous convient pas et qui ne correspond pas à l'ordre de la file d'attente des modules qui attendent d'être exécutés. C'est ce que vous appelez une absence de file d'attente ?

Pour moi, toute file d'attente est une file d'attente. Y compris la file d'attente d'exécution au niveau du noyau. C'est une boîte noire. Prenez-le pour ce qu'il est. Vous avez besoin de votre propre file d'attente avec son propre ordre - arrangez-la vous-même.

Il n'y a pas besoin d'une commande spéciale dans cette bibliothèque. J'utilise différents objets de synchronisation. L'ordre dans lequel il est exécuté n'a pas d'importance. Vous n'avez pas besoin d'y penser. Le système fera tout par lui-même.

Je ne comprends pas ce que je veux dire par être mystérieux. Encore une fois avec le fantasme ? :-))

 
Zhunko:

1. Le système impose une file d'attente dans un ordre que vous n'aimez pas et qui ne correspond pas à l'ordre de la file d'attente des modules qui attendent d'être exécutés. C'est ce que vous appelez une absence de file d'attente ?

2. Pour moi, toute file d'attente est une file d'attente. Y compris la file d'attente d'exécution au niveau du noyau. C'est une boîte noire. Prenez-le comme il est. Vous avez besoin de votre propre file d'attente avec son propre ordre - organisez-la vous-même.

3. Il n'y a pas besoin dans cette bibliothèque d'un ordre d'exécution spécial. J'utilise différents objets de synchronisation. L'ordre dans lequel il est exécuté n'a pas d'importance. Vous n'avez pas besoin d'y penser. Le système le fera tout seul.

4. Je ne comprends pas ce que je veux dire par être mystérieux. Encore des fantasmes ? :-))


1) Fournir un accès atomique n'implique pas de fournir un ordre d'accès uniforme. L'ordre d'accès aux fonctions sera pratiquement accidentel, ce qui n'exclut pas qu'une fonction ne soit pas laissée de côté à un moment donné.

2. Pas une boîte noire, mais complètement absente. L'ordre d'exécution est le suivant : la mamie du 7ème étage éternue.

3. il est toutefois nécessaire d'assurer l'exécution égale de toutes les fonctions (ou, plus précisément, de traiter les terminaux de manière groupée). Il semble parfois que vous ne compreniez pas ce dont nous parlons. Tu l'as fait, tu ne l'as pas fait. Et toujours avec un tel rebondissement... S'il n'y en a pas, alors il y en a, mais ce n'est pas cela et ce n'est pas ainsi...

4. Toi, Vadim, tu es tellement enveloppé que tu ne comprends pas dans quoi tu es enveloppé, comment tu es enveloppé et pour combien de temps...

 
Il a acheté beaucoup de cœurs de processeurs. Et maintenant, pour lequel faire la queue)))))))))
 
Integer:


1) Fournir un accès atomique n'implique pas du tout de fournir un ordre d'accès uniforme. L'ordre d'accès aux fonctions sera presque aléatoire, ce qui n'exclut pas la possibilité qu'une fonction ne soit pas oubli ée à un moment donné.

2. Pas une boîte noire, mais complètement absente. L'ordre d'exécution est le suivant : la mamie du 7ème étage éternue.

3. il est toutefois nécessaire d'assurer l'exécution égale de toutes les fonctions (ou, plus précisément, de traiter les terminaux de manière groupée). Il semble parfois que vous ne compreniez pas ce dont nous parlons. Tu l'as fait, tu ne l'as pas fait. Et toujours avec un tel rebondissement... S'il n'y en a pas, alors il y en a, mais ce n'est pas cela et ce n'est pas ainsi...

4. Toi, Vadim, tu es tellement enveloppé que tu ne comprends pas dans quoi tu es enveloppé, comment tu es enveloppé et pour combien de temps...

Vous semblez avoir divisé les points, mais vous ne répondez pas selon le sens. Oui, vous n'avez pas à répondre là non plus. Je comprends que pour vous, la file d'attente et l'ordre d'exécution sont la même chose. C'est pour ça que tu ne sais pas de quoi je parle.

Si vous souhaitez une exécution uniforme, vous devez utiliser un seul thread. Vous n'aurez alors pas besoin de synchronisation. Comment assurer l'exécution uniforme de threads dont on ne connaît ni le nombre ni la durée d'exécution?

Le mien est simple. Dans et hors du bloc protégé, comme il se doit selon la science de la programmation. Il n'est pas du tout nécessaire de s'embêter avec votre file d'attente spéciale. Tu le découvriras un jour.

Ouais, tu as aussi tout faux sur celui qui est en surbrillance. Une synchronisation correctement effectuée (c'est-à-dire sans erreur de code ou de logique) exécute tous les threads. C'est le système qui le garantit, et non l'ordre d'exécution.

 
Zhunko:

1. Vous semblez avoir décomposé les points, mais vous ne répondez pas de manière significative. Oui, vous n'avez pas à répondre là non plus. Je comprends que pour vous, la file d'attente et l'ordre de la file d'attente sont la même chose. C'est pour ça que tu ne sais pas de quoi je parle.

2. Si vous voulez une exécution uniforme, utilisez un seul thread. Vous n'aurez alors pas besoin de synchronisation. Comment assurer l'exécution uniforme des threads, dont le temps d'exécution et le nombre ne sont pas connus ?

3. C'est simple. Dans et hors du bloc protégé, comme cela devrait être par la science de la programmation. Il n'est pas du tout nécessaire de s'embêter avec votre file d'attente spéciale. Tu le découvriras un jour.

4. Ouais, tu as aussi tout faux sur celui qui est en surbrillance. Une synchronisation correctement effectuée (c'est-à-dire sans erreur de code ou de logique) exécute tous les threads. Ceci est garanti par le système et non par l'ordre d'exécution.


1. Vous devez avoir des problèmes de compréhension. Je sais de quoi tu parles.

2. Merci, mais je ne demandais pas de conseils. D'autant plus que nous discutons de la synchronisation de quelque chose qui n'est pas déjà dans un seul thread.

3. la façon dont cela devrait être fait selon la science. Quelle science ? Votre propre science ? Un jour, vous le comprendrez, mais il n'y a rien de compliqué. Les langages de programmation et les algorithmes n'ont pas été inventés et créés par des imbéciles. Mais pour une raison quelconque, ils sont dotés de moyens de synchronisation et de mise en file d'attente.

4. très mal. Si c'est correct....Si il y avait une synchronicité. Mais dans le code que vous avez cité ici un peu plus tôt, il n'y a pas de synchronisation, seulement un accès atomique.

 
Zhunko:

La file d'attente est organisée comme dans toute autre langue. Par lui-même à travers l'organisation de l'entrée et de la sortie du bloc à protéger.

C'est un script :

Quant à la réduction des effectifs, comme le remplacement par d'autres fonctions, elle ne fonctionnera pas. Voilà ce qu'est l'accès atomique. Une seule fonction peut faire cela dans MQL4.

Il semble que cela fonctionne bien. Chargé 6 scripts avec des pauses de 3000, 2000, 1000, 500, 300, 200. Voici une partie du journal :

19:58:36 Check_GlobalVariableSetOnCondition() GBPJPY,M1 : Début GBPJPY
19:58:37 Check_GlobalVariableSetOnCondition() GBPJPY,M1 : Fin GBPJPY
19:58:37 Check_GlobalVariableSetOnCondition() EURUSD,M1 : EURUSD Début
19:58:39 Check_GlobalVariableSetOnCondition() EURUSD,M1 : EURUSD Fin
19:58:39 Check_GlobalVariableSetOnCondition() USDCAD,M1 : USDCAD Début
19 :19:58:39 Check_GlobalVariableSetOnCondition() USDCAD,M1 : USDCAD End
19:58:39 Check_GlobalVariableSetOnCondition() AUDUSD,M1 : AUDUSD Start
19:58:43 Check_GlobalVariableSetOnCondition() AUDUSD,M1 : AUDUSD Fin
19:58:43 Check_GlobalVariableSetOnCondition() GBPUSD,M1 : GBPUSD Début
19:58:43 Check_GlobalVariableSetOnCondition() GBPUSD,M1 : GBPUSD Fin
19 :19:58:43 Check_GlobalVariableSetOnCondition() EURUSD,M1 : Début EURUSD
19:58:45 Check_GlobalVariableSetOnCondition() EURUSD,M1 : Fin EURUSD
19:58:45 Check_GlobalVariableSetOnCondition() GBPUSD,M1 : GBPUSD Début
19:58:46 Check_GlobalVariableSetOnCondition() GBPUSD,M1 : GBPUSD Fin
19:58:46 Check_GlobalVariableSetOnCondition() NZDUSD,M1 : NZDUSD Début
19 :19:58:46 Check_GlobalVariableSetOnCondition() NZDUSD,M1 : NZDUSD End
19:58:46 Check_GlobalVariableSetOnCondition() USDCAD,M1 : USDCAD Start
19:58:46 Check_GlobalVariableSetOnCondition() USDCAD,M1 : USDCAD Fin
19:58:46 Check_GlobalVariableSetOnCondition() NZDUSD,M1 : NZDUSD Début
19:58:47 Check_GlobalVariableSetOnCondition() NZDUSD,M1 : NZDUSD Fin
1919:58:47 Check_GlobalVariableSetOnCondition() GBPJPY,M1 : Début GBPJPY
19:58:48 Check_GlobalVariableSetOnCondition() GBPJPY,M1 : Fin GBPJPY
19:58:48 Check_GlobalVariableSetOnCondition() EURUSD,M1 : EURUSD Début
19:58:50 Check_GlobalVariableSetOnCondition() EURUSD,M1 : EURUSD Fin
19:58:50 Check_GlobalVariableSetOnCondition() USDCAD,M1 : USDCAD Début
19 :19:58:50 Check_GlobalVariableSetOnCondition() USDCAD,M1 : USDCAD End
19:58:50 Check_GlobalVariableSetOnCondition() AUDUSD,M1 : AUDUSD Start
19:58:54 Check_GlobalVariableSetOnCondition() AUDUSD,M1 : AUDUSD Fin
19:58:54 Check_GlobalVariableSetOnCondition() NZDUSD,M1 : NZDUSD Début
19:58:54 Check_GlobalVariableSetOnCondition() NZDUSD,M1 : NZDUSD Fin
19 :19:58:54 Check_GlobalVariableSetOnCondition() EURUSD,M1 : EURUSD Start
19:58:56 Check_GlobalVariableSetOnCondition() EURUSD,M1 : EURUSD End
19:58:56 Check_GlobalVariableSetOnCondition() USDCAD,M1 : USDCAD Début
19:58:57 Check_GlobalVariableSetOnCondition() USDCAD,M1 : USDCAD Fin
19:58:57 Check_GlobalVariableSetOnCondition() AUDUSD,M1 : AUDUSD Début
1919:59:00 Check_GlobalVariableSetOnCondition() AUDUSD,M1 : AUDUSD End
19:59:00 Check_GlobalVariableSetOnCondition() GBPUSD,M1 : GBPUSD Start
19:59:00 Check_GlobalVariableSetOnCondition() GBPUSD,M1 : GBPUSD Fin
19:59:00 Check_GlobalVariableSetOnCondition() USDCAD,M1 : USDCAD Début
19:59:01 Check_GlobalVariableSetOnCondition() USDCAD,M1 : USDCAD Fin


Encore une fois, juste au cas où pour ceux qui sont dans un char dans un sous-marin et qui portent toujours un casque. Seul l'accès atomique est montré ici. L'ordre de fonctionnement des fonctions se fera au gré du vent. Ce code ne prévoit pas l'exécution uniforme des fonctions. C'est pourquoi il n'y a aucune garantie qu'une fonction ne restera pas en rayon pendant très longtemps. Il est ridicule de compter sur l'aptitude au service dans la programmation uniquement parce que la fréquence du processeur est élevée, même si la fréquence du processeur est très élevée.

 

La synchronisation est également un concept relatif. Synchronisation de quoi avec quoi ? Synchronisation pour l'accès atomique ? Et qui va construire la file d'attente ? Junko, peut-être que votre bibliothèque construit la file d'attente normalement, si le code est tiré de MSDN, car tout y est fait correctement. Et tu l'as juste copié sans comprendre ce qu'il fait - comme les lunettes d'un singe. Ou peut-être que tu inventes tout ça comme tu le fais toujours. Parce que vous ne comprenez pas. Vous confondez la synchronisation pour l'accès atomique avec la mise en file d'attente.

Raison: