From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com [IPv6:2a00:1450:4864:20::433]) by sourceware.org (Postfix) with ESMTPS id D7BDC398B888 for ; Fri, 12 Mar 2021 12:22:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org D7BDC398B888 Received: by mail-wr1-x433.google.com with SMTP id e18so1666454wrt.6 for ; Fri, 12 Mar 2021 04:22:23 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=gKnL+7FjmlmDOAdPFxVZoedopgy1UYmCyI792fJaEjU=; b=TxSkg+kJBafPqC/byCqFLpHZYj/aUwelsYPuAx5JUvcvsEYu2rjXVnb+CkEkhs+JD+ dbrVtWb0E7YEurdonIaIPPtZV43zgPXfhCs+72O8cxwNjD84NEwm7lGEKrEzS/yUfGkV ccfOlGuzx1VoaHwdMew1sCGOWEu8LP9EV/Q8lx2vEfIH+Kf5AKfyElNX5BWJhwVsES0D V6CM/fxfYKvgISf36XMyBkUGmyhJfKvRNDYNgndYeC/ekK9wSi/ar44T7MQnsYwlaR8c G9q6Oj17FriTzKx5/KvxLW3A2DcWdVFobRd98unc7uoBqUw34IYR3Kf3b1RgFmTcStKw 031A== X-Gm-Message-State: AOAM531T7eYNeUi5PXzjtvSxi2am+EaRDgRQ9VuzLoqjJZ021vt5HEjf VJQtEnPoiwMWzK1ZfxCaChABuZXiBJd+ZHh0JGtUMB7uJr8= X-Google-Smtp-Source: ABdhPJzykT/67WDivjrsEkMw8Ph9OfG9VO/EqXeoTDrenrZfwFMsCpVpWXPiyAjNzNw7Hzy3V6Rj6wqhm+8xDBZw00k= X-Received: by 2002:adf:d236:: with SMTP id k22mr13724564wrh.144.1615551742795; Fri, 12 Mar 2021 04:22:22 -0800 (PST) MIME-Version: 1.0 From: "Alessio G. B." Date: Fri, 12 Mar 2021 13:21:47 +0100 Message-ID: Subject: [PATCH] libstdc++: Implementation of class strand To: libstdc++@gcc.gnu.org Content-Type: multipart/mixed; boundary="000000000000bef4dd05bd55f342" X-Spam-Status: No, score=-9.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libstdc++@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++ mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Mar 2021 12:22:25 -0000 --000000000000bef4dd05bd55f342 Content-Type: text/plain; charset="UTF-8" I expanded the implementation of the class strand of the Networking TS. Essentially, I implemented a token system so each thread knows when it can execute; the system is organized with 2 integers moving as a clock. 2021-03-12 Alessio G. Baroni libstdc++-v3: * include/experimental/executor: Implemented algorithm for serial execution regardless of the underlying Executor. --000000000000bef4dd05bd55f342 Content-Type: text/x-patch; charset="US-ASCII"; name="strand.patch" Content-Disposition: attachment; filename="strand.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_km69e2dz0 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2V4cGVyaW1lbnRhbC9leGVjdXRvciBi L2xpYnN0ZGMrKy12My9pbmNsdWRlL2V4cGVyaW1lbnRhbC9leGVjdXRvcgppbmRleCBjNjcwZjI3 MzliNi4uYWZkNWE2NDM2NmYgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2V4cGVy aW1lbnRhbC9leGVjdXRvcgorKysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9leHBlcmltZW50YWwv ZXhlY3V0b3IKQEAgLTE0NzgsMTMgKzE0NzgsMTYgQEAgaW5saW5lIG5hbWVzcGFjZSB2MQogCiAg ICAgICAvLyBjb25zdHJ1Y3QgLyBjb3B5IC8gZGVzdHJveToKIAotICAgICAgc3RyYW5kKCk7IC8v IFRPRE8gbWFrZSBzdGF0ZQorICAgICAgc3RyYW5kKCkgOiBfTV9zdGF0ZShzdGQ6Om1ha2Vfc2hh cmVkPF9TdGF0ZT4oKSkgeyB9CiAKLSAgICAgIGV4cGxpY2l0IHN0cmFuZChfRXhlY3V0b3IgX19l eCkgOiBfTV9pbm5lcl9leChfX2V4KSB7IH0gLy8gVE9ETyBtYWtlIHN0YXRlCisgICAgICBleHBs aWNpdCBzdHJhbmQoX0V4ZWN1dG9yIF9fZXgpCisJICA6IF9NX3N0YXRlKHN0ZDo6bWFrZV9zaGFy ZWQ8X1N0YXRlPigpKSwKKwkgICAgX01faW5uZXJfZXgoX19leCkgeyB9CiAKICAgICAgIHRlbXBs YXRlPHR5cGVuYW1lIF9BbGxvYz4KIAlzdHJhbmQoYWxsb2NhdG9yX2FyZ190LCBjb25zdCBfQWxs b2MmIF9fYSwgX0V4ZWN1dG9yIF9fZXgpCi0JOiBfTV9pbm5lcl9leChfX2V4KSB7IH0gLy8gVE9E TyBtYWtlIHN0YXRlCisJOiBfTV9zdGF0ZShzdGQ6OmFsbG9jYXRlX3NoYXJlZDxfU3RhdGU+KF9f YSkpLAorCSAgX01faW5uZXJfZXgoX19leCkgeyB9CiAKICAgICAgIHN0cmFuZChjb25zdCBzdHJh bmQmIF9fb3RoZXIpIG5vZXhjZXB0CiAgICAgICA6IF9NX3N0YXRlKF9fb3RoZXIuX01fc3RhdGUp LCBfTV9pbm5lcl9leChfX290aGVyLl9NX2lubmVyX2V4KSB7IH0KQEAgLTE1MDgsOCArMTUxMSwx MCBAQCBpbmxpbmUgbmFtZXNwYWNlIHYxCiAJc3RhdGljX2Fzc2VydChpc19jb3B5X2Fzc2lnbmFi bGU8X0V4ZWN1dG9yPjo6dmFsdWUsCiAJCSAgICAgICJpbm5lciBleGVjdXRvciB0eXBlIG11c3Qg YmUgQ29weUFzc2lnbmFibGUiKTsKIAotCS8vIFRPRE8gbG9jayBfX290aGVyCi0JLy8gVE9ETyBj b3B5IHN0YXRlCisjaWYgZGVmaW5lZChfR0xJQkNYWF9IQVNfR1RIUkVBRFMpCisJc3RkOjpsb2Nr X2d1YXJkPHN0ZDo6bXV0ZXg+IF9fbG9jayhfX290aGVyLl9NX3N0YXRlLT5fTV9tdXRleCk7Cisj ZW5kaWYKKwlfTV9zdGF0ZSA9IF9fb3RoZXIuX01fc3RhdGU7CiAJX01faW5uZXJfZXggPSBfX290 aGVyLl9NX2lubmVyX2V4OwogCXJldHVybiAqdGhpczsKICAgICAgIH0KQEAgLTE1MjAsNyArMTUy NSwxMCBAQCBpbmxpbmUgbmFtZXNwYWNlIHYxCiAJc3RhdGljX2Fzc2VydChpc19tb3ZlX2Fzc2ln bmFibGU8X0V4ZWN1dG9yPjo6dmFsdWUsCiAJCSAgICAgICJpbm5lciBleGVjdXRvciB0eXBlIG11 c3QgYmUgTW92ZUFzc2lnbmFibGUiKTsKIAotCS8vIFRPRE8gbW92ZSBzdGF0ZQorI2lmIGRlZmlu ZWQoX0dMSUJDWFhfSEFTX0dUSFJFQURTKQorCXN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBf X2xvY2soX19vdGhlci5fTV9zdGF0ZS0+X01fbXV0ZXgpOworI2VuZGlmCisJX01fc3RhdGUgPSBz dGQ6Om1vdmUoX19vdGhlci5fTV9zdGF0ZSk7CiAJX01faW5uZXJfZXggPSBzdGQ6Om1vdmUoX19v dGhlci5fTV9pbm5lcl9leCk7CiAJcmV0dXJuICp0aGlzOwogICAgICAgfQpAQCAtMTUzMiw4ICsx NTQwLDEwIEBAIGlubGluZSBuYW1lc3BhY2UgdjEKIAkgIHN0YXRpY19hc3NlcnQoaXNfY29udmVy dGlibGU8X090aGVyRXhlY3V0b3IsIF9FeGVjdXRvcj46OnZhbHVlLAogCQkJImlubmVyIGV4ZWN1 dG9yIHR5cGUgbXVzdCBiZSBjb21wYXRpYmxlIik7CiAKLQkgIC8vIFRPRE8gbG9jayBfX290aGVy Ci0JICAvLyBUT0RPIGNvcHkgc3RhdGUKKyNpZiBkZWZpbmVkKF9HTElCQ1hYX0hBU19HVEhSRUFE UykKKwkgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBfX2xvY2soX19vdGhlci5fTV9zdGF0 ZS0+X01fbXV0ZXgpOworI2VuZGlmCisJICBfTV9zdGF0ZSA9IF9fb3RoZXIuX01fc3RhdGU7CiAJ ICBfTV9pbm5lcl9leCA9IF9fb3RoZXIuX01faW5uZXJfZXg7CiAJICByZXR1cm4gKnRoaXM7CiAJ fQpAQCAtMTU0NSwxNSArMTU1NSwxNiBAQCBpbmxpbmUgbmFtZXNwYWNlIHYxCiAJICBzdGF0aWNf YXNzZXJ0KGlzX2NvbnZlcnRpYmxlPF9PdGhlckV4ZWN1dG9yLCBfRXhlY3V0b3I+Ojp2YWx1ZSwK IAkJCSJpbm5lciBleGVjdXRvciB0eXBlIG11c3QgYmUgY29tcGF0aWJsZSIpOwogCi0JICAvLyBU T0RPIG1vdmUgc3RhdGUKKyNpZiBkZWZpbmVkKF9HTElCQ1hYX0hBU19HVEhSRUFEUykKKwkgIHN0 ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBfX2xvY2soX19vdGhlci5fTV9zdGF0ZS0+X01fbXV0 ZXgpOworI2VuZGlmCisJICBfTV9zdGF0ZSA9IHN0ZDo6bW92ZShfX290aGVyLl9NX3N0YXRlKTsK IAkgIF9NX2lubmVyX2V4ID0gc3RkOjptb3ZlKF9fb3RoZXIuX01faW5uZXJfZXgpOwogCSAgcmV0 dXJuICp0aGlzOwogCX0KIAogICAgICAgfnN0cmFuZCgpCiAgICAgICB7Ci0JLy8gdGhlIHRhc2sg cXVldWUgb3V0bGl2ZXMgdGhpcyBvYmplY3QgaWYgbm9uLWVtcHR5Ci0JLy8gVE9ETyBjcmVhdGUg Y2lyY3VsYXIgcmVmIGluIHF1ZXVlPwogICAgICAgfQogCiAgICAgICAvLyBzdHJhbmQgb3BlcmF0 aW9uczoKQEAgLTE1ODUsNyArMTU5NiwyMSBAQCBpbmxpbmUgbmFtZXNwYWNlIHYxCiAKICAgICAg IHRlbXBsYXRlPHR5cGVuYW1lIF9GdW5jLCB0eXBlbmFtZSBfQWxsb2M+CiAJdm9pZAotCXBvc3Qo X0Z1bmMmJiBfX2YsIGNvbnN0IF9BbGxvYyYgX19hKSBjb25zdDsgLy8gVE9ETworCXBvc3QoX0Z1 bmMmJiBfX2YsIGNvbnN0IF9BbGxvYyYgX19hKSBjb25zdAorICAgICAgICB7CisjaWYgZGVmaW5l ZChfR0xJQkNYWF9IQVNfR1RIUkVBRFMpCisJICBhdXRvIHRva2VuID0gX01fc3RhdGUtPm5ld190 b2tlbigpOworCisJICBfTV9pbm5lcl9leC5wb3N0KAorCSAgICAgIFt0b2tlbiwgX19zdGF0ZSA9 IF9NX3N0YXRlLCAmX19mXSgpCisJICAgICAgeworCQlfX3N0YXRlLT5pbnZva2UodG9rZW4sIHN0 ZDo6Zm9yd2FyZDxfRnVuYz4oX19mKSk7CisJICAgICAgfSwKKwkgICAgICBfX2EpOworI2Vsc2UK KwkgIF9NX2lubmVyX2V4LnBvc3Qoc3RkOjpmb3J3YXJkPF9GdW5jPihfX2YpLCBfX2EpOworI2Vu ZGlmCisJfQogCiAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRnVuYywgdHlwZW5hbWUgX0FsbG9j PgogCXZvaWQKQEAgLTE1OTcsMTkgKzE2MjIsNTYgQEAgaW5saW5lIG5hbWVzcGFjZSB2MQogICAg ICAgb3BlcmF0b3I9PShjb25zdCBzdHJhbmQmIF9fYSwgY29uc3Qgc3RyYW5kJiBfX2IpCiAgICAg ICB7IHJldHVybiBfX2EuX01fc3RhdGUgPT0gX19iLl9NX3N0YXRlOyB9CiAKLSAgICAgIC8vIFRP RE8gYWRkIHN5bmNocm9uaXNlZCBxdWV1ZQogICAgICAgc3RydWN0IF9TdGF0ZQogICAgICAgewog I2lmIGRlZmluZWQoX0dMSUJDWFhfSEFTX0dUSFJFQURTKQorCV9TdGF0ZSgpCisJICAgIDogX01f cnVubmluZ19vbihzdGQ6OnRoaXNfdGhyZWFkOjpnZXRfaWQoKSksCisJICAgICAgX01fbmV4dF90 b2tlbigwKSwKKwkgICAgICBfTV9sYXN0X3Rva2VuKDApIHsgfQorCiAJYm9vbAogCXJ1bm5pbmdf aW5fdGhpc190aHJlYWQoKSBjb25zdCBub2V4Y2VwdAogCXsgcmV0dXJuIHN0ZDo6dGhpc190aHJl YWQ6OmdldF9pZCgpID09IF9NX3J1bm5pbmdfb247IH0KIAorCXVuc2lnbmVkIGludAorCW5ld190 b2tlbigpCisJeworCSAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IF9fbG9jayhfTV9tdXRl eCk7CisKKwkgIHJldHVybiBfTV9sYXN0X3Rva2VuKys7CisJfQorCisJdGVtcGxhdGU8dHlwZW5h bWUgX0Z1bmM+CisJdm9pZAorCWludm9rZSh1bnNpZ25lZCBpbnQgdG9rZW4sIF9GdW5jJiYgX19m KQorCXsKKwkgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gX19sb2NrKF9NX211dGV4KTsK KworCSAgX01fY3Yud2FpdChfX2xvY2ssCisJCSAgICAgW3Rva2VuLCBuZXh0X3Rva2VuID0gX01f bmV4dF90b2tlbl0oKQorCQkgICAgIHsgcmV0dXJuIHRva2VuID09IG5leHRfdG9rZW47IH0pOwor CisJICB0cnkgeyBkZWNheV90PF9GdW5jPntzdGQ6OmZvcndhcmQ8X0Z1bmM+KF9fZil9KCk7IH0K KwkgIGNhdGNoKC4uLikgeyB9CisKKwkgIF9NX25leHRfdG9rZW4rKzsKKworCSAgX19sb2NrLnVu bG9jaygpOworCisJICBfTV9jdi5ub3RpZnlfYWxsKCk7CisJfQorCiAJc3RkOjp0aHJlYWQ6Omlk IF9NX3J1bm5pbmdfb247CisJc3RkOjptdXRleCBfTV9tdXRleDsKKwlzdGQ6OmNvbmRpdGlvbl92 YXJpYWJsZSBfTV9jdjsKKwl1bnNpZ25lZCBpbnQgX01fbmV4dF90b2tlbjsKKwl1bnNpZ25lZCBp bnQgX01fbGFzdF90b2tlbjsKICNlbHNlCi0JYm9vbCBydW5uaW5nX2luX3RoaXNfdGhyZWFkKCkg Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCWJvb2wgcnVubmluZ19pbl90aGlzX3RocmVhZCgpIGNv bnN0IG5vZXhjZXB0IHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgogICAgICAgfTsKKwogICAgICAg c2hhcmVkX3B0cjxfU3RhdGU+IF9NX3N0YXRlOwogICAgICAgX0V4ZWN1dG9yIF9NX2lubmVyX2V4 OwogICAgIH07Cg== --000000000000bef4dd05bd55f342--