await

(66) c# async await

人走茶凉 提交于 2019-12-04 15:18:34
static void Main(string[] args) { Program p = new Program(); Console.WriteLine(1); p.Go(); Console.WriteLine(2); Console.ReadLine(); } async Task Go() { Console.WriteLine(3); await a(); Console.WriteLine(4); } async Task a() { Console.WriteLine(5); int i = await b(); Console.WriteLine(i); } async Task<int> b() { Console.WriteLine(6); await Task.Delay(5000); Console.WriteLine(7); int i = 999; return i; } 2以后暂停几秒后继续执行 来源: https://www.cnblogs.com/buchizaodian/p/11871286.html

python-aiohttp

瘦欲@ 提交于 2019-12-04 11:19:45
# _*_ coding: utf-8 _*_ """ 转载别人的——xianhu """ import asyncio import aiohttp # 简单实例 async def aiohttp_01 ( url ): async with aiohttp.ClientSession() as session: async with session.get(url) as resp: print (resp.status) print ( await resp.text()) loop = asyncio.get_event_loop() tasks = [aiohttp_01( " https://api.github.com/events " )] loop.run_until_complete(asyncio.wait(tasks)) loop.close() # 其他Http方法 # session.post('http://httpbin.org/post', data=b'data') # session.put('http://httpbin.org/put', data=b'data') # session.delete('http://httpbin.org/delete') # session.head('http://httpbin.org/get')

Java 复习 —— 锁以及线程之间的通讯

时光总嘲笑我的痴心妄想 提交于 2019-12-03 05:54:59
1、Lock 1)1.5版本之后出现,java.util.concurrent.locks.Lock 2) Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。此实现允许更灵活的结构,可以具有差别很大的属性,可以支持多个相关的 Condition 对象。 锁是控制多个线程对共享资源进行访问的工具。通常,锁提供了对共享资源的独占访问。一次只能有一个线程获得锁,对共享资源的所有访问都需要首先获得锁。不过,某些锁可能允许对共享资源并发访问,如 ReadWriteLock 的读取锁。 3)一般使用的Lock替代synchronized的代码如下: private Lock l = new ReentrantLock(); l.lock(); try { // access the resource protected by this lock } finally { l.unlock(); } 4)和synchronized一样,也可以在线程之间进行通讯,如下代码: class Data { private int number = 0;// 共享变量 private Lock lock = new ReentrantLock(); // 一种互斥锁 private Condition c1 = lock.newCondition(); //

CountDownLatch和CycliBarrier介绍

六月ゝ 毕业季﹏ 提交于 2019-12-03 03:58:01
一、CountDownLatch   它被用来同步一个或多个任务,强制他们等待其他任务完成,这就是闭锁。 public CountDownLatch(int count) { if (count < 0) throw new IllegalArgumentException("count < 0"); this.sync = new Sync(count); }   类中只有一个构造函数,一个int类型的参数count,代表计数器。这个计数器的初始值是线程的数量,每当一个线程结束,count-1,当count==0 时,所有线程执行完毕,在闭锁上等待的线程就可以执行了。 类中还包含了三个公共方法: public void await() public boolean await(long timeout, TimeUnit unit) public void countDown()   当每个任务完成时,都会调用countDown()方法。而等待问题被解决的任务在这个锁存器上调用await()方法,这个任务就相当于被挂起了直到 timeout 或 计数器为0 。 public class CountDownLatchDemo { static final int SIZE = 5; public static void main(String[] args) {

C# 8 - using声明 和 异步流

我只是一个虾纸丫 提交于 2019-12-03 03:28:26
这两个主题没什么关系,但是怕文章太短被移除主页。 using声明 using 语句块 尽管 .NET Core 运行时有垃圾收集器( GC )来负责内存清理工作,但是我们还是要自己确保当非托管资源不再使用的时候应该被清理掉。以前针对实现了 IDisposable 接口的对象,我们经常会使用using 语句块来这样做: 这时候它的输出是这样的: 这样写还是有一点麻烦的,能简单一些就好了。但是而如果不使用 using 语句的话,那资源就不会被清理: 其输出就没有 disposed 那段了: using 声明 但是从C# 8 开始,我们可以使用 using 声明来做这件事了,要比之前的using语句块简单一些,直接看例子: 就是在定义变量前面的地方使用using声明。 这样做的话,在Main方法走完的时候,db这个资源是可以被清理掉的: 可以看到db被Disposed了,但是您肯定也发现了不同之处:最后两行输出的顺序发生了变化。 在使用using语句块的时候,清理动作发生在using块结束的时候: 而使用using声明以后,清理动作会发生超出db作用范围的时候,也就是离开Main方法的时候: 用法 using语句块和using声明还是要结合具体情况来使用。。。 更详细内容请点击: 官方教程 。 异步流 Asynchronous Streams 例子 这是一个很简单的控制台程序。它有一个

Pressing Enter button in puppeteer

匿名 (未验证) 提交于 2019-12-03 01:16:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: Pressing enter in puppeteer doesn't seem to have any effect. However, when I press other keys, it does what it should. This works: await page.press('ArrowLeft'); This doesn't: await page.press('Enter'); This is how the input looks like: Any ideas? EDIT: I've also tried page.keyboard.down & page.keyboard.up to be sure. 回答1: await page.type(String.fromCharCode(13)); Using this site I noticed that page.type dispatches beforeinput and input events, but page.press doesn't. This is probably a bug, but fortunately sending the enter keycode (13)

Puppeteer wait page load after form submit

匿名 (未验证) 提交于 2019-12-03 00:46:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I submit a form using the following code and i want Puppeteer to wait page load after form submit. await page.click("button[type=submit]"); //how to wait until the new page loads before taking screenshot? // i don't want this: // await page.waitFor(1*1000); //← unwanted workaround await page.screenshot({path: 'example.png'}); How to wait for page load with puppeteer? 回答1: You can wait for navigation asynchronously to avoid getting null on redirection, await Promise.all([ page.click("button[type=submit]"), page.waitForNavigation({ waitUntil:

并发执行多个 await,promiss.all

匿名 (未验证) 提交于 2019-12-03 00:12:02
await 可以同步执行,但是有时候为了提升性能,反而需要并发多个await同步执行,此时需要用到promise.all DEMO如下 async function doit () { var list = []; list . push ( sayHello ( 'a1' )) list . push ( sayHello ( 'a2' )); var result = await Promise . all ( list ); console . log ( result ); console . log ( 'over' ) } async function sayHello ( name ) { await new Promise ( function ( resolve ) { setTimeout ( function () { console . log ( name + new Date ()); resolve ( name ); }, 1000 ) }) } doit (); 来源:51CTO 作者: isaisai 链接:https://blog.csdn.net/ISaiSai/article/details/101694918

async/await 使用

匿名 (未验证) 提交于 2019-12-03 00:02:01
1.在函数之间加上async意味着:函数将返回一个Promise async f() { return '444'; }, f().then(res=>{ console.log(res) //打印444 }); 2.await的基本语法 async f() { let promise = new Promise((resolve, reject) => { console.log('1111') setTimeout(() => resolve("done!"), 2000) }); let result = await promise; //等待promise的resolve执行完再执行 console.log(result); // "done!" 2s后打印 }, f(); 函数执行将会在 let result = await promise 这一行暂停,直到Promise返回结果,因此上述代码将会2秒后打印出done! 再看: fn(num) { return new Promise((resolve, reject) => { setTimeout(() => { resolve(2 * num) }, 2000); }) }, async testResult() { let first = await this.fn(30); let second = await

async/await 的引用

匿名 (未验证) 提交于 2019-12-02 23:57:01
static async void Start() { string s = "ass"; Console.WriteLine(getMemory(s)+"Hello World!" + Thread.CurrentThread.ManagedThreadId); await AsyncMethod(); Console.WriteLine(getMemory(s) + "End World!" + Thread.CurrentThread.ManagedThreadId); Console.WriteLine(); } static async Task AsyncMethod() { await Task.Run(() => { Console.WriteLine("AsyncMethod 执行," + Thread.CurrentThread.ManagedThreadId); }); } 是不一样的! 来源:博客园 作者: qgbo 链接:https://www.cnblogs.com/qgbo/p/11468527.html