what is the threading system of flutter - multithreading

I have coded in dart and flutter for the past 3 months. I have one app in the play store. But I still don't understand how threading system of flutter works.
To make things simple let's take the most basic counter app that you get when you do flutter create basicapp.
Question no 1. How many threads are there in that basic app?
Question no 2. If there are multiple threads when are they created? When it calls runApp(MyApp())?
Question no 3. I know that dart has a concept of isolates. Are isolates the same as threads?

Question 1:
When the application starts running, there is a single Isolate/Thread
that we know as the UI thread.
Question 2:
Generally you are good with a single thread in most applications. But
in case you want to create a separate Isolate, you can use
"Isolate.spawn". Provided a link in the end for better understanding.
Question 3:
Answering simply, Yes.
Here is a link for better understanding.
Cheers!! Hope it helps.

Related

Node.js or go for a mongodb server [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
I have been trying to create a mongodb server which will receive post requests and insert or read from a mongodb server and reply back. I have started with node.js. However while I was reading stuff, I have been realizing, people actually hate node.js. Many people are crossing to GO. So I am all confused now.
I have chosen node.js because of the natural json compatibility of javascript. However after all the things I have read, node.js sounds like a waste of time.
Could someone help me clarify my confusion ?
Thank you.
Edit : People refer to the problem of callback hell, and lowering performance of node.js once the business logic starts to be more complex than simple loops.
People refer to the problem of callback hell
This has never been an issue for me. You can use whatever structure you want in your code. Any promise library may be helpful if you find that you really need 1,000 nested callbacks, but this is rare in most circumstances.
lowering performance of node.js once the business logic starts to be more complex than simple loops
Rarely is this a problem. Most applications are IO-bound. If yours isn't, you have a couple options. One is not to use Node.js. Another is to compile a native extension for the specific part that's dragging you down (since you'll be writing native code to solve this problem anyway) and call it from the rest of your Node.js application. That way you get most of the performance of your native code but still get the flexibility of working in JavaScript.
Since you linked to that Reddit post, I'll address some of the comments there.
Javascript is very fast. Yes this is true, V8 is very fast... however, only if you are benchmarking a simple benchmark. As soon as you start adding in complex application logic all that performance goes out the door because the virtual machine has a very difficult time correctly inferring the type and thus not being able to optimize. But if your application consists of a tight loop, it will be fast.. so its got that going for it :D
It's all relative. No doubt that weakly typed and interpreted anything is slower. It's a trade-off that you have to decide makes sense for what you're doing. Personally, it's far cheaper for me to fire up another box to handle the load than it is to rewrite all of the helpful modules and frameworks I use in Go. Maybe that's not the case for you, so you get to decide.
In my 3 years of full time node.js development, I have honestly only had ONE occasion where I used the same 4 lines of code both in the server and in the client.
This is generally true. I don't understand why shared client/server code is some sort of selling point for Node.js, as it isn't for most applications. I had one case where several classes I wrote for an RPC layer ran on both the server and the client. One thing I will say though is that there are a ton of NPM packages that run in both so if you get used to using a nice package on one, it will often times work on the other.
Ohh and did I mention Node.js isn't really all JavaScript? A good portion of the pakcages on NPM are also written in Coffeescript. Hope you don't mind learning another language to deal with a package you depend on. So much for using the same language for both server and client!
You don't have to learn Coffeescript to use an NPM package written in Coffeescript. Coffeescript compiles to JavaScript, and are used in your code the same way any other package is. Also, those same Coffeescript packages do run just fine in the browser since it all builds to JavaScript.
With Go you get type safety. This CANNOT be overstated.. except to maybe ruby-ists(jk jk! don't shoot me).
It's up to you to decide if this matters for your use case.
The one benefit you have with Node.js over Go is the massive number of packages available on NPM. But most of them are useless abandoned junk. So, even that is questionable.
Don't use abandoned junk, just like you wouldn't with any packages on any platform. It's very easy to see what's abandoned junk. NPM calls out what's been updated and when, whether or not its dependencies are up to date, and how many people are using that package. There are definitely a massive number of useful packages available for Node.js, just like they are for most popular platforms.
Testing: Lets just say that in Node.js/Javascript you would have to write tests that check the type of a variable. tsk tsk tsk... This is the only way to properly test JS and make sure nothing crazy is going on.
That's not really accurate, and I'm really curious what's going on in this person's application where this is necessary.

Node.js beginner questions [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I have been really playing with node.js alot here lately. I really like it and would like to get serious about building a site that I have in mind with it. There are just a few things that I had questions on. I am currently using express, cluster, mongoose(mongodb), and dust because it seems like the community is doing pretty well with this setup.
The first question that I have run into is making changes in the app. If I change one of the files in my app (with the exception of templates), I have to restart the app in order for the changes to show up. Is there something out there that will do this automatically or is there something I am missing?
The second question I have is, are there any really good resources out there that anyone can recommend. Seems like alot of the stuff that I have found through google just explains one topic and there are not alot of books on it yet(see some good ones releasing this year though). I was wondering if there was a really good resource for node applications (really interested in how people are structuring there applications and what they are using).
The third question or really feedback I would like to get is what good node modules should I be looking into using for my application. I really like cluster and running apache benchmarks with it versus without it I saw a double in the number of requests it could handle when using all 4 cores versus just the single core. I want to try and keep my code so that I dont have to write the logic twice for the backend / frontend which is why i have decided to use dust as my templating choice.
The last thing that I would like to know is based on an article that I read by linkedin (http://engineering.linkedin.com/frontend/leaving-jsps-dust-moving-linkedin-dustjs-client-side-templates). After reading this article I was just impressed by the ingenuity that they came up with to do this. I see many benefits from this by saving bandwidth on the server from not having to server process the files each time and letting the users browser do the load. It also will allow for less bandwidth throughput by not sending the whole template to the browser every time and caching it. But I am just stumped as to how they accomplished this. Can someone please shine some light on this subject or if you know of a good article that explains how to do this it would be great. I dont know for sure I would use this implementation but I would love to know how to do in case it is applicable.
Thanks for any feedback.
First question:
Actualy there are multiple tools that do the job starting from nodemon to supervisor
Second question:
Learning materials
videos: nodetuts
books: from node beginner and more books
podcast: nodeup
alot of great bloggers: laurenzo | Peteris Krumins about usefull nodejs modules | dailyjs and many more
grouped modules: toolbox.no.de (for unknown reason not working now)
Not to forget nodejs docs. Also browsing github and reading source for great nodejs modules or apps can be quite good for learning.
Third question:
i think my Second question answer includes this one also.

Silverlight Threadpool

I have a question about threading in Silverlight. I come mainly from a winForms background and usually use the following wrapper class to do my threading:
http://msdn.microsoft.com/en-us/magazine/cc163644.aspx
It has worked for doing window development but I am not able to use it in Silverlight. The reason is because ExecutionContext is marked with the [SecurityCritical] attribute making it impossible to call from Silverlight.
Is there a similar wrapper class out there for Silverlight or is there a way I can get around this issue?
Thanks!
I would not use the class you cited even in a WinForm application. It still uses Thread.Abort which can (and probably would) corrupt the app domain. Instead, use the new Cancellation mechanisms in the Task Parallel Library. You will have to rethink your whole approach to cancelling the work items though. This is because you can no longer rely on forced termination and have to use cooperative termination instead. The advantage is that the later can be guaranteed to avoid corrupting the app domain.
Take a look at cancellation tokens (via the CancellationTokenSource) available only in SL5. It uses a similar mechanism as the one used in your MSDN mag ref.
This is a good 'how-to' article. Some MSDN References here, as well as a lengthy but great article here
All the best, and welcome to XAML programming :) You won't look back!
Rewrite existed code for using a "Task" (Task Link) or a BackgroundWorker (BackgroundWorker Link).
We should use a newest technologies, which give us a technological evolution.

Development Platform for Small application

I will soon be developing an application to log and priorities worker shifts. It only needs to be small, and simple, but I am wondering what framework to use. All that needs to happen is boxes with names are in 3 lists, and the user can switch these around at will. It must log the times, which I will need access to in real time.
Im new to application development of this sort, and would like any suggestions. I have time to learn new technologies / languages.
Portability / device independence would also be useful. Should I consider a Web Application in Javascript? or something more like Python.
Thanks.
Even if your application is going to be simple that does not mean that whole system will be simple too. I can imagine that your app will serve only as a front end to something much bigger. If that is a case and you really have freedom to choose what language you will develop your app with consider choosing something that you will feel comfortable to work with. But before you will make your decision I would go to whoever gave you that task and try to get as much information about it as you can because expected features can help in choosing technology.
First of all, it seems that it is up to you to decide if it should be web or desktop app. In my opinion it is completely wrong situation. You should get clear requirements on what kind of application customer expects and in what environment it should work. And I would not move a finger towards a code before somebody gave me that information. You write that portability and device independence would be useful but is it actual requirement or you just think it would be nice feature to deliver?
EDITED (to answer a question in comment)
Probably there is as much possible solutions as people that would answer you so in the end you will have to make your own choices.
One way of doing it (considering that you want to learn something new and have a challenge :) would be implement WCF service that would act as a data provider from your database (so every GetUsers(), GetVacationDays() methods would be in it) and it would take care of some business logic (for example CalculateMaxValidWorkingTime() or whatever). That service would be a real power horse of your system. Since you don't have clear requirement whether it should be desktop or web app you could satisfy both possibilities by creating thin clients that would communicate with your service and they would be just a pretty front ends. And if you keep in mind that you can consume webservices practically with everything from C++ to .NET (C#/VB) to Javascript to Python to PHP after you done with service you would not be constrained with one particular technology/language.
Regarding databases I won't advice because personally I hate dealing with them and it always was somebody else's task to provide me with pretty API :)

IIS hang state

Any suggestion to detect flaws in VB6 components running under IIS. IIS becomes unstable and after some time enter in a state of hang. The problems occur in the most part only in the production environment. We have many modules running. Probably there are components with bugs and need to identify them.
Thanks in advance.
One thing to watch out for is multi-threading issues. VB6 components often don't play well when accessed by multiple threads.
If the client code is an ASP.NET application consider putting synchlocks around the calls to ensure that they are called sequentially.
Another sure-fire way to fubar IIS is to display a message box or initiate some other sort of user interaction. Get those MsgBox calls outa there.
Other than that... good logging helps. VB6 is pretty opaque when errors arise.
Use Debugging Tools for Windows to analyze a dump of IIS. Tess' blog is one of the best resources to learn to use WinDbg. Although she focuses on .NET debugging, most of the material is applicable to any Win32 process.

Resources