gpt4 book ai didi

nim-lang - Nim 对多个线程进行计数

转载 作者:行者123 更新时间:2023-12-03 08:27:08 25 4
gpt4 key购买 nike

我目前正在尝试计算我请求某个网站的次数。在 python 中,我只会使用一个全局变量,但我不知道如何在 nim 中编写它。

import httpclient

proc threadMain(a: int) {.thread.} =

var client = newHttpClient()
while true:
try:
var r = client.getContent("URL")
echo "sent"
#Count here
except:
echo "error"

var thread: array[0..10, Thread[int]]

for i in 0..10:
thread[i].createThread(threadMain, i)

thread.joinThreads()

最佳答案

这几乎被解释为“Nim in Action”书第 174 页中的副本。

首先,如果您在 Python 中使用全局变量,则必须使用锁,否则会面临竞争条件的风险。 Nim 中的情况并没有什么不同:首先创建一个全局变量,并使用 lock 来保护它。 .

import locks

var counterLock: Lock
initLock(counterLock)
var counter {.guard: counterLock.} = 0

现在使用 withLock 来更新计数器:

withLock counterLock:
counter.inc

书中与并行/并发相关的章节非常好。您应该检查它,因为它还解释了并发性(您的代码是并发性优于线程的示例)或如何使用 Channels例如,在线程之间传递数据。

关于nim-lang - Nim 对多个线程进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66302396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com